[linux-lvm] libdevmapper's handling of devices with spaces in the name

Zdenek Kabelac zkabelac at redhat.com
Wed Feb 26 18:21:40 UTC 2014


Dne 26.2.2014 18:04, Phillip Susi napsal(a):
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> So if I tell dmsetup to create a device named 'foo bar' it ends up
> actually naming it 'foo\x20bar'.  If I run parted on 'foo\x20bar', it
> appears that libdevmapper helpfully tries to unescape the name,
> returning 'foo bar' from dm_task_get_name().  Unfortunately, such a
> dev node does not actually exist so this creates a problem trying to
> open it.
>
> This seems like a bug in libdevmapper.  I'd say the name of the actual
> dev node should not be escaped in the first place.

This is no longer true for 'modern' systems with udev.

libdevmapper no longer creates any /dev nodes - it's all job for udev.

And udev has had in dark ages the idea to use 'space' as a separator
for device names in device list. Thus it 'invented' escaping/mangling names.
(There are more prohibited characters which used to be used for normal device 
names (see man dmsetup mangling))

If you have system without udev - you could disable name mangling on i.e. 
dmsetup cmdline.

There is also envvar DM_DEFAULT_NAME_MANGLING_MODE_ENV_VAR_NAME
which could be used to set prefered behavior.

So there is no bug in libdm side - but I'll not comment on the rest...

I'll just note - it really means all tools now would need to be fixed to 
handle udev mangled names properly...

Regards

Zdenek





More information about the linux-lvm mailing list