[kpartx] Don't add 'p' delimiter when you shouldn't
authorPhillip Susi <psusi@ubuntu.com>
Thu, 9 Feb 2012 20:16:21 +0000 (21:16 +0100)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Thu, 9 Feb 2012 20:16:21 +0000 (21:16 +0100)
The 'p' delimiter is supposed to be added when the base disk name
ends in a digit.  This decision was based on the name given on the
command line, not the canonical device name, so giving /dev/dm-0
instead of /dev/mapper/foo triggered the digit test and added the
'p'.  Changed test to use the canonical name rather than the given
name.

kpartx/kpartx.c

index 0711450..b5e0a32 100644 (file)
@@ -323,12 +323,6 @@ main(int argc, char **argv){
                device = loopdev;
        }
 
-       if (delim == NULL) {
-               delim = malloc(DELIM_SIZE);
-               memset(delim, 0, DELIM_SIZE);
-               set_delimiter(device, delim);
-       }
-
        off = find_devname_offset(device);
 
        if (!loopdev) {
@@ -350,6 +344,12 @@ main(int argc, char **argv){
                return 0;
        }
 
+       if (delim == NULL) {
+               delim = malloc(DELIM_SIZE);
+               memset(delim, 0, DELIM_SIZE);
+               set_delimiter(device, delim);
+       }
+
        fd = open(device, O_RDONLY);
 
        if (fd == -1) {