Message ID | Pine.LNX.4.64.0904271945400.9362@hs20-bc2-1.build.redhat.com (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Alasdair Kergon |
Headers | show |
On Mon, Apr 27, 2009 at 07:49:44PM -0400, Mikulas Patocka wrote: > Here it is: > @@ -279,8 +280,9 @@ static int delay_map(struct dm_target *t > > if ((bio_data_dir(bio) == WRITE) && (dc->dev_write)) { > bio->bi_bdev = dc->dev_write->bdev; > - bio->bi_sector = dc->start_write + > - (bio->bi_sector - ti->begin); > + if (bio_sectors(bio)) > + bio->bi_sector = dc->start_write + > + (bio->bi_sector - ti->begin); Thanks:-) Now it looks similar to the code in the other simple targets again. Alasdair
Index: linux-2.6.30-rc2-devel/drivers/md/dm-delay.c =================================================================== --- linux-2.6.30-rc2-devel.orig/drivers/md/dm-delay.c 2009-04-20 09:53:22.000000000 +0200 +++ linux-2.6.30-rc2-devel/drivers/md/dm-delay.c 2009-04-28 01:44:08.000000000 +0200 @@ -198,6 +198,7 @@ out: mutex_init(&dc->timer_lock); atomic_set(&dc->may_delay, 1); + ti->num_flush_requests = 1; ti->private = dc; return 0; @@ -279,8 +280,9 @@ static int delay_map(struct dm_target *t if ((bio_data_dir(bio) == WRITE) && (dc->dev_write)) { bio->bi_bdev = dc->dev_write->bdev; - bio->bi_sector = dc->start_write + - (bio->bi_sector - ti->begin); + if (bio_sectors(bio)) + bio->bi_sector = dc->start_write + + (bio->bi_sector - ti->begin); return delay_bio(dc, dc->write_delay, bio); }