blkid escape most special symbols in ID_FS_LABEL, but I think it should additionally escape / symbol (for ease mkdir/ln/mount in udev rules). home ~ # e2label /dev/sda8 A !"#$%&'()*+,z home ~ # blkid -o udev -p /dev/sda8 | grep LABEL= ID_FS_LABEL=A___#$%_____+,z home ~ # e2label /dev/sda8 A-./:;<=>?[\]^_z home ~ # blkid -o udev -p /dev/sda8 | grep LABEL= ID_FS_LABEL=A-./:__=_?_____z home ~ # e2label /dev/sda8 A`{|}~z home ~ # blkid -o udev -p /dev/sda8 | grep LABEL= ID_FS_LABEL=A_____z
the blkid behavior specifically matches udev. you can e-mail the systemd/udev guys if you like. systemd/src/libudev/libudev-private.h: #define UDEV_ALLOWED_CHARS_INPUT "/ $%?," libblkid/src/encode.c: #define UDEV_ALLOWED_CHARS_INPUT "/ $%?,"