Index: sys/dev/ata/atapi-cd.c =================================================================== RCS file: /home/ncvs/src/sys/dev/ata/atapi-cd.c,v retrieving revision 1.179.2.1 diff -u -r1.179.2.1 atapi-cd.c --- sys/dev/ata/atapi-cd.c 25 Aug 2005 16:21:05 -0000 1.179.2.1 +++ sys/dev/ata/atapi-cd.c 5 Oct 2005 12:01:33 -0000 @@ -760,7 +760,7 @@ } else { u_int pos, size = cdp->iomax - cdp->iomax % bp->bio_to->sectorsize; - struct bio *bp2; + struct bio *bp2, *first, *cur, **next = &first; for (pos = 0; pos < bp->bio_length; pos += size) { if (!(bp2 = g_clone_bio(bp))) { @@ -773,7 +773,13 @@ bp2->bio_data += pos; bp2->bio_length = MIN(size, bp->bio_length - pos); bp2->bio_pblkno = bp2->bio_offset / bp2->bio_to->sectorsize; - acd_strategy(bp2); + *next = bp2; + next = (struct bio **)&bp2->bio_driver1; + } + *next = 0; + while ((cur = first) != 0) { + first = (struct bio *)cur->bio_driver1; + acd_strategy(cur); } } }