The packet writing module creates a bio in its own way, so its iocontext should be set here. This code hasn't been tested yet. Signed-off-by: Hirokazu Takahashi <taka@xxxxxxxxxxxxx> --- linux-2.6.25.bio0/drivers/block/pktcdvd.c 2008-04-22 15:48:36.000000000 +0900 +++ linux-2.6.25/drivers/block/pktcdvd.c 2008-04-22 15:53:41.000000000 +0900 @@ -514,6 +514,7 @@ static void pkt_bio_finished(struct pktc static void pkt_bio_destructor(struct bio *bio) { + put_io_context(bio->bi_io_context); kfree(bio->bi_io_vec); kfree(bio); } @@ -522,6 +523,11 @@ static struct bio *pkt_bio_alloc(int nr_ { struct bio_vec *bvl = NULL; struct bio *bio; + struct io_context *ioc; + + ioc = get_io_context(GFP_KERNEL, -1); + if (!ioc) + goto no_ioc; bio = kmalloc(sizeof(struct bio), GFP_KERNEL); if (!bio) @@ -535,12 +541,15 @@ static struct bio *pkt_bio_alloc(int nr_ bio->bi_max_vecs = nr_iovecs; bio->bi_io_vec = bvl; bio->bi_destructor = pkt_bio_destructor; + bio->bi_io_context = ioc; return bio; no_bvl: kfree(bio); no_bio: + put_io_context(ioc); + no_ioc: return NULL; } -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel