[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[dm-devel] [PATCH] dm snapshot: ignore discards issued to the snapshot-origin target
- From: Mike Snitzer <snitzer redhat com>
- To: dm-devel redhat com
- Cc: DarkNovaNick gmail com, LVM general discussion and development <linux-lvm redhat com>
- Subject: [dm-devel] [PATCH] dm snapshot: ignore discards issued to the snapshot-origin target
- Date: Wed, 27 Apr 2011 20:19:13 -0400
Discards pose a problem for the snapshot-origin target because they are
treated as writes. Treating a discard as a write would trigger a
copyout to the snapshot. Such copyout can prove too costly in the face
of otherwise benign scenarios (e.g. create a snapshot and then mkfs.ext4
the origin -- mkfs.ext4 discards the entire volume by default, which
would copyout the entire origin volume to the snapshot).
Signed-off-by: Mike Snitzer <snitzer redhat com>
---
drivers/md/dm-snap.c | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/drivers/md/dm-snap.c b/drivers/md/dm-snap.c
index a2d3309..639af12 100644
--- a/drivers/md/dm-snap.c
+++ b/drivers/md/dm-snap.c
@@ -2076,6 +2076,7 @@ static int origin_ctr(struct dm_target *ti, unsigned int argc, char **argv)
ti->private = dev;
ti->num_flush_requests = 1;
+ ti->num_discard_requests = 1;
return 0;
}
@@ -2095,6 +2096,12 @@ static int origin_map(struct dm_target *ti, struct bio *bio,
if (bio->bi_rw & REQ_FLUSH)
return DM_MAPIO_REMAPPED;
+ if (bio->bi_rw & REQ_DISCARD) {
+ /* ignore discard requests */
+ bio_endio(bio, 0);
+ return DM_MAPIO_SUBMITTED;
+ }
+
/* Only tell snapshots if this is a write */
return (bio_rw(bio) == WRITE) ? do_origin(dev, bio) : DM_MAPIO_REMAPPED;
}
@@ -2153,7 +2160,7 @@ static int origin_iterate_devices(struct dm_target *ti,
static struct target_type origin_target = {
.name = "snapshot-origin",
- .version = {1, 7, 1},
+ .version = {1, 8, 0},
.module = THIS_MODULE,
.ctr = origin_ctr,
.dtr = origin_dtr,
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]