On Mon, May 6, 2013 at 11:12 PM, Lennart Poettering <[email protected]> wrote: > On Tue, 23.04.13 13:34, MUNEDA Takahiro ([email protected]) > wrote: > >> This patch escapes a unit name which was derived from udev. >> >> Please imagine following udev rule. >> >> ACTION=="online|offline", TAG+="systemd", >> ENV{SYSTEMD_WANTS}="muneda@%p.service" >> ACTION=="online|offline", TAG+="systemd", >> ENV{SYSTEMD_WANTS}="muneda@%r.service" >> ACTION=="online|offline", TAG+="systemd", >> ENV{SYSTEMD_WANTS}="muneda@%S.service" >> >> When unit name is derived from udev via >> udev_device_get_property_value(), the name may contains '/' if >> ENV{SYSTEMD_WANTS} has the udev options $devpath(%p), $root(%r), or >> $sys(%S). However, '/' is a invalid char for unit name so processing >> of this rule fails as Invalid argument with following message. >> >> Apr 22 13:21:37 localhost systemd[1]: Failed to load device unit: Invalid >> argument >> Apr 22 13:21:37 localhost systemd[1]: Failed to process udev device event: >> Invalid argument >> >> This patch escapes those invalid chars in a unit name. >> Tested with 202, and confirmed to apply cleanly on top of commit 195f8e36. > > The patch looks OK I guess. I merged it now. I am not entirely sure > though that using the devpath as instance name is actually the best > choice... Kay?
Some devices can move around during runtime, the device number (dev_t, ifindex) or the "<subsytem>:<devname>" is usually the better choice. A bit like this: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/base/core.c#n1918 Kay _______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
