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.
Index: b/kpartx/kpartx.c
===================================================================
--- a/kpartx/kpartx.c
+++ b/kpartx/kpartx.c
@@ -310,12 +310,6 @@
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) {
@@ -331,6 +325,12 @@
if (!mapname)
mapname = device + off;
+ if (delim == NULL) {
+ delim = malloc(DELIM_SIZE);
+ memset(delim, 0, DELIM_SIZE);
+ set_delimiter(mapname, delim);
+ }
+
fd = open(device, O_RDONLY);
if (fd == -1) {
Attachment:
signature.asc
Description: OpenPGP digital signature