[lvm-devel] [PATCH 4/4] Fix dmsetup table output (different format in 2.02.85)

Milan Broz mbroz at redhat.com
Thu Jun 9 14:30:31 UTC 2011


In previous versions < 2.02.85 dmsetup table <dev>
produced just dmsetup table, no device.

# dmsetup table abc
0 100 zero

Now is the output changed to:
# dmsetup table abc
abc: 0 100 zero

It should be only for all and multiple devices, not for one.

It breaks at least cryptsetup test suite, I guess there
are more problems.

Patch somehow workarounds it, I have no idea what was the intention
for this change.
I guess even Alasdair should use patch review process sometimes :-p

Signed-off-by: Milan Broz <mbroz at redhat.com>
---
 test/t-covercmd.sh |    5 +++++
 tools/dmsetup.c    |    9 ++++++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/test/t-covercmd.sh b/test/t-covercmd.sh
index 7843798..8c86388 100755
--- a/test/t-covercmd.sh
+++ b/test/t-covercmd.sh
@@ -34,6 +34,11 @@ pvcreate --norestorefile -u $TEST_UUID --metadatacopies 0 $dev5
 vgcreate -c n $vg $(cat DEVICES)
 lvcreate -n $lv -l 5 -i5 -I256 $vg
 
+# dmsetup table works
+dmsetup table "$vg-$lv"
+test $(dmsetup table "$vg-$lv" | cut -d' '  -f 3) = "striped"
+test $(dmsetup table "$vg-$lv" "$vg-$lv" | head -n 1 | cut -d:  -f 1) = "$vg-$lv"
+
 # test *scan and *display tools
 pvscan
 vgscan
diff --git a/tools/dmsetup.c b/tools/dmsetup.c
index 2a8e5a6..0a2e429 100644
--- a/tools/dmsetup.c
+++ b/tools/dmsetup.c
@@ -1310,7 +1310,7 @@ static int _process_all(const struct command *cmd, int argc, char **argv, int si
 
 	do {
 		names = (struct dm_names *)((char *) names + next);
-		if (!fn(cmd, argc, argv, names, 1))
+		if (!fn(cmd, argc, argv, names, 2))
 			r = 0;
 		next = names->next;
 	} while (next);
@@ -1590,7 +1590,7 @@ static int _status(CMD_ARGS)
 			   _switches[VERBOSE_ARG]) {
 			if (!matched && _switches[VERBOSE_ARG])
 				_display_info(dmt);
-			if (multiple_devices && !_switches[VERBOSE_ARG])
+			if (multiple_devices > 1 && !_switches[VERBOSE_ARG])
 				printf("%s: ", name);
 			if (target_type) {
 				/* Suppress encryption key */
@@ -3412,7 +3412,10 @@ int main(int argc, char **argv)
 	#endif
 
       doit:
-	multiple_devices = (argc > 1);
+	if (argc > 1)
+		multiple_devices = (argc > 2) ? 2 : 1;
+	else
+		multiple_devices = 0;
 	do {
 		if (!cmd->fn(cmd, argc--, argv++, NULL, multiple_devices)) {
 			fprintf(stderr, "Command failed\n");
-- 
1.7.5.3




More information about the lvm-devel mailing list