Browse Source

dm delay: support barriers

Flush support for dm-delay target.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Mikulas Patocka 16 years ago
parent
commit
c927259e34
1 changed files with 4 additions and 2 deletions
  1. 4 2
      drivers/md/dm-delay.c

+ 4 - 2
drivers/md/dm-delay.c

@@ -197,6 +197,7 @@ out:
 	mutex_init(&dc->timer_lock);
 	mutex_init(&dc->timer_lock);
 	atomic_set(&dc->may_delay, 1);
 	atomic_set(&dc->may_delay, 1);
 
 
+	ti->num_flush_requests = 1;
 	ti->private = dc;
 	ti->private = dc;
 	return 0;
 	return 0;
 
 
@@ -278,8 +279,9 @@ static int delay_map(struct dm_target *ti, struct bio *bio,
 
 
 	if ((bio_data_dir(bio) == WRITE) && (dc->dev_write)) {
 	if ((bio_data_dir(bio) == WRITE) && (dc->dev_write)) {
 		bio->bi_bdev = dc->dev_write->bdev;
 		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);
 		return delay_bio(dc, dc->write_delay, bio);
 	}
 	}