diff options
| author | Peter Edwards <peadar@FreeBSD.org> | 2005-10-09 21:11:05 +0000 |
|---|---|---|
| committer | Peter Edwards <peadar@FreeBSD.org> | 2005-10-09 21:11:05 +0000 |
| commit | 96ca84d197222ce74ee4147712464994d0cc90b2 (patch) | |
| tree | 48f1adfdb334dd861d074d9c38e23b6c53d6c5c0 /sys/dev/ata | |
| parent | 11cba99f6727d9f0c35de9c9b10ca53e11c893cd (diff) | |
Notes
Diffstat (limited to 'sys/dev/ata')
| -rw-r--r-- | sys/dev/ata/atapi-cd.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/dev/ata/atapi-cd.c b/sys/dev/ata/atapi-cd.c index 16a188acd36ba..f737fe3b4e520 100644 --- a/sys/dev/ata/atapi-cd.c +++ b/sys/dev/ata/atapi-cd.c @@ -760,7 +760,7 @@ acd_geom_start(struct bio *bp) } else { u_int pos, size = cdp->iomax - cdp->iomax % bp->bio_to->sectorsize; - struct bio *bp2; + struct bio *bp2, *first, **next = &first; for (pos = 0; pos < bp->bio_length; pos += size) { if (!(bp2 = g_clone_bio(bp))) { @@ -773,6 +773,12 @@ acd_geom_start(struct bio *bp) bp2->bio_data += pos; bp2->bio_length = MIN(size, bp->bio_length - pos); bp2->bio_pblkno = bp2->bio_offset / bp2->bio_to->sectorsize; + *next = bp2; + next = (struct bio **)&bp2->bio_driver1; + } + *next = NULL; + while ((bp2 = first) != NULL) { + first = (struct bio *)bp2->bio_driver1; acd_strategy(bp2); } } |
