diff mbox series

[ndctl] daxctl: fix systemd escaping for 90-daxctl-device.rules

Message ID 20220418185336.1192330-1-vishal.l.verma@intel.com (mailing list archive)
State Accepted
Commit 91e0015f1eaa5fe0e768615866288e46fc2a53a5
Headers show
Series [ndctl] daxctl: fix systemd escaping for 90-daxctl-device.rules | expand

Commit Message

Vishal Verma April 18, 2022, 6:53 p.m. UTC
Older systemd was more tolerant of how unit names are passed in for
instantiated services via a udev rule, but of late, systemd flags
unescaped unit names, with an error such as:

  fedora systemd[1]: Invalid unit name "daxdev-reconfigure@/dev/dax0.0.service"
  escaped as "daxdev-reconfigure@-dev-dax0.0.service" (maybe you should use
  systemd-escape?).

Update the udev rule to pass the 'DEVNAME' from env through an
appropriate systemd-escape template so that it generates the correctly
escaped string.

Cc: Dan Williams <dan.j.williams@intel.com>
Reported-by: Chunhong Mao <chunhong.mao@intel.com>
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
---
 daxctl/90-daxctl-device.rules | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)


base-commit: 97031db9300654260bc2afb45b3600ac01beaeba

Comments

Dan Williams April 18, 2022, 7:15 p.m. UTC | #1
On Mon, Apr 18, 2022 at 11:54 AM Vishal Verma <vishal.l.verma@intel.com> wrote:
>
> Older systemd was more tolerant of how unit names are passed in for
> instantiated services via a udev rule, but of late, systemd flags
> unescaped unit names, with an error such as:
>
>   fedora systemd[1]: Invalid unit name "daxdev-reconfigure@/dev/dax0.0.service"
>   escaped as "daxdev-reconfigure@-dev-dax0.0.service" (maybe you should use
>   systemd-escape?).
>

Does systemd-escape exist on older systemd deployments? Is some new
systemd version detection or 'systemd-escape' detection needed in the
build configuration to select the format of 90-daxctl-device.rules?


> Update the udev rule to pass the 'DEVNAME' from env through an
> appropriate systemd-escape template so that it generates the correctly
> escaped string.
>
> Cc: Dan Williams <dan.j.williams@intel.com>
> Reported-by: Chunhong Mao <chunhong.mao@intel.com>
> Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
> ---
>  daxctl/90-daxctl-device.rules | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/daxctl/90-daxctl-device.rules b/daxctl/90-daxctl-device.rules
> index ee0670f..e02e7ec 100644
> --- a/daxctl/90-daxctl-device.rules
> +++ b/daxctl/90-daxctl-device.rules
> @@ -1 +1,3 @@
> -ACTION=="add", SUBSYSTEM=="dax", TAG+="systemd", ENV{SYSTEMD_WANTS}="daxdev-reconfigure@$env{DEVNAME}.service"
> +ACTION=="add", SUBSYSTEM=="dax", TAG+="systemd",\
> +  PROGRAM="/usr/bin/systemd-escape -p --template=daxdev-reconfigure@.service $env{DEVNAME}",\
> +  ENV{SYSTEMD_WANTS}="%c"
>
> base-commit: 97031db9300654260bc2afb45b3600ac01beaeba
> --
> 2.35.1
>
Vishal Verma April 18, 2022, 7:47 p.m. UTC | #2
On Mon, 2022-04-18 at 12:15 -0700, Dan Williams wrote:
> On Mon, Apr 18, 2022 at 11:54 AM Vishal Verma
> <vishal.l.verma@intel.com> wrote:
> > 
> > Older systemd was more tolerant of how unit names are passed in for
> > instantiated services via a udev rule, but of late, systemd flags
> > unescaped unit names, with an error such as:
> > 
> >   fedora systemd[1]: Invalid unit name "daxdev-
> > reconfigure@/dev/dax0.0.service"
> >   escaped as "daxdev-reconfigure@-dev-dax0.0.service" (maybe you
> > should use
> >   systemd-escape?).
> > 
> 
> Does systemd-escape exist on older systemd deployments? Is some new
> systemd version detection or 'systemd-escape' detection needed in the
> build configuration to select the format of 90-daxctl-device.rules?

Good point - I think we're okay. systemd-escape was introduced in v216
back in 2014 [1], and from a quick glance at repology, even the oldest
distros are at least on v219 [2].

[1]: https://github.com/systemd/systemd/blob/main/NEWS#L10370
[2]: https://repology.org/project/systemd/versions

> 
> 
> > Update the udev rule to pass the 'DEVNAME' from env through an
> > appropriate systemd-escape template so that it generates the
> > correctly
> > escaped string.
> > 
> > Cc: Dan Williams <dan.j.williams@intel.com>
> > Reported-by: Chunhong Mao <chunhong.mao@intel.com>
> > Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
> > ---
> >  daxctl/90-daxctl-device.rules | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/daxctl/90-daxctl-device.rules b/daxctl/90-daxctl-
> > device.rules
> > index ee0670f..e02e7ec 100644
> > --- a/daxctl/90-daxctl-device.rules
> > +++ b/daxctl/90-daxctl-device.rules
> > @@ -1 +1,3 @@
> > -ACTION=="add", SUBSYSTEM=="dax", TAG+="systemd",
> > ENV{SYSTEMD_WANTS}="daxdev-reconfigure@$env{DEVNAME}.service"
> > +ACTION=="add", SUBSYSTEM=="dax", TAG+="systemd",\
> > +  PROGRAM="/usr/bin/systemd-escape -p --template=daxdev-
> > reconfigure@.service $env{DEVNAME}",\
> > +  ENV{SYSTEMD_WANTS}="%c"
> > 
> > base-commit: 97031db9300654260bc2afb45b3600ac01beaeba
> > --
> > 2.35.1
> >
Dan Williams April 18, 2022, 7:52 p.m. UTC | #3
On Mon, Apr 18, 2022 at 12:48 PM Verma, Vishal L
<vishal.l.verma@intel.com> wrote:
>
> On Mon, 2022-04-18 at 12:15 -0700, Dan Williams wrote:
> > On Mon, Apr 18, 2022 at 11:54 AM Vishal Verma
> > <vishal.l.verma@intel.com> wrote:
> > >
> > > Older systemd was more tolerant of how unit names are passed in for
> > > instantiated services via a udev rule, but of late, systemd flags
> > > unescaped unit names, with an error such as:
> > >
> > >   fedora systemd[1]: Invalid unit name "daxdev-
> > > reconfigure@/dev/dax0.0.service"
> > >   escaped as "daxdev-reconfigure@-dev-dax0.0.service" (maybe you
> > > should use
> > >   systemd-escape?).
> > >
> >
> > Does systemd-escape exist on older systemd deployments? Is some new
> > systemd version detection or 'systemd-escape' detection needed in the
> > build configuration to select the format of 90-daxctl-device.rules?
>
> Good point - I think we're okay. systemd-escape was introduced in v216
> back in 2014 [1], and from a quick glance at repology, even the oldest
> distros are at least on v219 [2].
>
> [1]: https://github.com/systemd/systemd/blob/main/NEWS#L10370
> [2]: https://repology.org/project/systemd/versions

Ok, cool, looks good to me then:

Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Mao, Chunhong April 19, 2022, 5:02 a.m. UTC | #4
Hi Vishal,

Just to confirm that the patch has been Tested-by: Chunhong Mao <chunhong.mao@intel.com> on my system where the problem was reported initially and it does fix the problem, really appreciate your help!

Thanks,
Chunhong

-----Original Message-----
From: Verma, Vishal L <vishal.l.verma@intel.com> 
Sent: Monday, April 18, 2022 12:48 PM
To: Williams, Dan J <dan.j.williams@intel.com>
Cc: nvdimm@lists.linux.dev; Mao, Chunhong <chunhong.mao@intel.com>
Subject: Re: [ndctl PATCH] daxctl: fix systemd escaping for 90-daxctl-device.rules

On Mon, 2022-04-18 at 12:15 -0700, Dan Williams wrote:
> On Mon, Apr 18, 2022 at 11:54 AM Vishal Verma 
> <vishal.l.verma@intel.com> wrote:
> > 
> > Older systemd was more tolerant of how unit names are passed in for 
> > instantiated services via a udev rule, but of late, systemd flags 
> > unescaped unit names, with an error such as:
> > 
> >   fedora systemd[1]: Invalid unit name "daxdev- 
> > reconfigure@/dev/dax0.0.service"
> >   escaped as "daxdev-reconfigure@-dev-dax0.0.service" (maybe you 
> > should use
> >   systemd-escape?).
> > 
> 
> Does systemd-escape exist on older systemd deployments? Is some new 
> systemd version detection or 'systemd-escape' detection needed in the 
> build configuration to select the format of 90-daxctl-device.rules?

Good point - I think we're okay. systemd-escape was introduced in v216 back in 2014 [1], and from a quick glance at repology, even the oldest distros are at least on v219 [2].

[1]: https://github.com/systemd/systemd/blob/main/NEWS#L10370
[2]: https://repology.org/project/systemd/versions

> 
> 
> > Update the udev rule to pass the 'DEVNAME' from env through an 
> > appropriate systemd-escape template so that it generates the 
> > correctly escaped string.
> > 
> > Cc: Dan Williams <dan.j.williams@intel.com>
> > Reported-by: Chunhong Mao <chunhong.mao@intel.com>
> > Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
> > ---
> >  daxctl/90-daxctl-device.rules | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/daxctl/90-daxctl-device.rules b/daxctl/90-daxctl- 
> > device.rules index ee0670f..e02e7ec 100644
> > --- a/daxctl/90-daxctl-device.rules
> > +++ b/daxctl/90-daxctl-device.rules
> > @@ -1 +1,3 @@
> > -ACTION=="add", SUBSYSTEM=="dax", TAG+="systemd", 
> > ENV{SYSTEMD_WANTS}="daxdev-reconfigure@$env{DEVNAME}.service"
> > +ACTION=="add", SUBSYSTEM=="dax", TAG+="systemd",\
> > +  PROGRAM="/usr/bin/systemd-escape -p --template=daxdev-
> > reconfigure@.service $env{DEVNAME}",\
> > +  ENV{SYSTEMD_WANTS}="%c"
> > 
> > base-commit: 97031db9300654260bc2afb45b3600ac01beaeba
> > --
> > 2.35.1
> >
diff mbox series

Patch

diff --git a/daxctl/90-daxctl-device.rules b/daxctl/90-daxctl-device.rules
index ee0670f..e02e7ec 100644
--- a/daxctl/90-daxctl-device.rules
+++ b/daxctl/90-daxctl-device.rules
@@ -1 +1,3 @@ 
-ACTION=="add", SUBSYSTEM=="dax", TAG+="systemd", ENV{SYSTEMD_WANTS}="daxdev-reconfigure@$env{DEVNAME}.service"
+ACTION=="add", SUBSYSTEM=="dax", TAG+="systemd",\
+  PROGRAM="/usr/bin/systemd-escape -p --template=daxdev-reconfigure@.service $env{DEVNAME}",\
+  ENV{SYSTEMD_WANTS}="%c"