[dm-devel] [PATCH 3/3] dm-raid: change 'no_discard_passdown' table line argument to 'ignore_discard'

heinzm at redhat.com heinzm at redhat.com
Wed Sep 24 15:14:10 UTC 2014


From: Heinz Mauelshagen <heinzm at redhat.com>

The 'no_discard_passdown' table line argument introduced with [PATCH 2/3] of this
patch series may lead to the false assumption, that dm-raid might still process
discards internally for some reason.

Using 'ignore_discard' instead makes it clear, that dm-raid just completely
ignores discards, hence not passing them on to MD personalities.


Signed-off-by: Heinz Mauelshagen <heinzm at redhat.com>

---
 drivers/md/dm-raid.c | 38 +++++++++++++++++++-------------------
 1 file changed, 19 insertions(+), 19 deletions(-)

diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c
index a85d3cf..b9614ae 100644
--- a/drivers/md/dm-raid.c
+++ b/drivers/md/dm-raid.c
@@ -45,18 +45,18 @@ struct raid_dev {
 /*
  * Flags for rs->print_flags field.
  */
-#define DMPF_SYNC                0x1
-#define DMPF_NOSYNC              0x2
-#define DMPF_REBUILD             0x4
-#define DMPF_DAEMON_SLEEP        0x8
-#define DMPF_MIN_RECOVERY_RATE   0x10
-#define DMPF_MAX_RECOVERY_RATE   0x20
-#define DMPF_MAX_WRITE_BEHIND    0x40
-#define DMPF_STRIPE_CACHE        0x80
-#define DMPF_REGION_SIZE         0x100
-#define DMPF_RAID10_COPIES       0x200
-#define DMPF_RAID10_FORMAT       0x400
-#define DMPF_NO_DISCARD_PASSDOWN 0x800
+#define DMPF_SYNC              0x1
+#define DMPF_NOSYNC            0x2
+#define DMPF_REBUILD           0x4
+#define DMPF_DAEMON_SLEEP      0x8
+#define DMPF_MIN_RECOVERY_RATE 0x10
+#define DMPF_MAX_RECOVERY_RATE 0x20
+#define DMPF_MAX_WRITE_BEHIND  0x40
+#define DMPF_STRIPE_CACHE      0x80
+#define DMPF_REGION_SIZE       0x100
+#define DMPF_RAID10_COPIES     0x200
+#define DMPF_RAID10_FORMAT     0x400
+#define DMPF_IGNORE_DISCARD    0x800
 
 struct raid_set {
 	struct dm_target *ti;
@@ -476,7 +476,7 @@ too_many:
  *                                      will form the "stripe"
  *    [[no]sync]			Force or prevent recovery of the
  *                                      entire array
- *    [no_discard_passdown]		Prohibit discard passdown to the legs of the array;
+ *    [ignore_discard]                  Ignore any discards;
  *                                      can be used in cases of bogus TRIM/UNMAP
  *                                      support on array legs (e.g. discard_zeroes_data
  *                                      flaw causing RAID4/5/6 corruption)
@@ -564,8 +564,8 @@ static int parse_raid_params(struct raid_set *rs, char **argv,
 			rs->print_flags |= DMPF_SYNC;
 			continue;
 		}
-		if (!strcasecmp(argv[i], "no_discard_passdown")) {
-			rs->print_flags |= DMPF_NO_DISCARD_PASSDOWN;
+		if (!strcasecmp(argv[i], "ignore_discard")) {
+			rs->print_flags |= DMPF_IGNORE_DISCARD;
 			continue;
 		}
 
@@ -1171,8 +1171,8 @@ static void raid_check_discard(struct dm_target *ti, struct raid_set *rs)
 	/* Assume not supported until after checks below. */
 	ti->discards_supported = false;
 
-	/* Assume 'discard_supported = true' unless table argument 'no_discard_passdown' given */
-	discard_supported = !(rs->print_flags & DMPF_NO_DISCARD_PASSDOWN);
+	/* Assume 'discard_supported = true' unless table argument 'ignore_discard' given */
+	discard_supported = !(rs->print_flags & DMPF_IGNORE_DISCARD);
 	if (!discard_supported)
 		return;
 
@@ -1471,8 +1471,8 @@ static void raid_status(struct dm_target *ti, status_type_t type,
 			DMEMIT(" sync");
 		if (rs->print_flags & DMPF_NOSYNC)
 			DMEMIT(" nosync");
-		if (rs->print_flags & DMPF_NO_DISCARD_PASSDOWN)
-			DMEMIT(" no_discard_passsown");
+		if (rs->print_flags & DMPF_IGNORE_DISCARD)
+			DMEMIT(" ignore_discard");
 
 		for (i = 0; i < rs->md.raid_disks; i++)
 			if ((rs->print_flags & DMPF_REBUILD) &&
-- 
1.9.3




More information about the dm-devel mailing list