Re: Reason to use -r when systemd-run vgchange -aay

Tom Yan <[email protected]>
Newsgroups gmane.linux.lvm.general
Message-ID <CAGnHSEmTXbs2VoiHYFy4q+QJmg-PMbQq71ag-f7ot48P+Mj0QQ@mail.gmail.com>
On Tue, 14 Dec 2021 at 23:35, David Teigland <[email protected]> wrote:
>
> On Tue, Dec 14, 2021 at 01:45:57PM +0800, Tom Yan wrote:
> > Hi David,
> >
> > I notice that in the "new" 69-dm-lvm.rules, vgchange -aay is run with
> > systemd-run, which is not a problem.
> >
> > However, the fact that the --remain-after-exit (i.e. -r) switch is
> > used is, because the service is not stopped when e.g. one deactivates
> > a VG with vgchange -an, which will prevent the VG from being
> > auto-activated again if e.g. the PV is removed and inserted again.
> >
> > I'm not sure if that was a desired behaviour / one of the intended
> > purposes. Regardless, I'm not exactly seeing the sense of that either.
> >
> > Besides, I don't suppose it would work very well for multi-PV VGs
> > anyway. I mean, most likely similar errors (albeit probably harmless)
> > would be spammed because of the repeated attempt to *create* a
> > transient unit of the same name. (Repeated systemd-run is NOT the same
> > as repeated systemctl start; it's also the reason that triggering
> > `systemctl stop` with remove event is not a perfect idea either, since
> > transient unit created would be gone once it is stopped, so repeated
> > systemctl stop will cause more errors to be spammed; Yet we need the
> > unit to be gone when it is stopped for the current approach, even if
> > it's possible to prevent it from going away.)
> >
> > So are there any reasons that we actually need -r? If so, I think we
> > need to deal with them with another approach (maybe unit template?).
>
> I added -r to make it easier to see the status/output of the transient
> service.  The problem of rerunning the same transient service crossed my
> mind at one point, but I never went back to check that.  With your
> confirmation, it sounds like -r should be removed.  I want to check if
> we can see everything we need to without -r.  I think that service
> templates only work with device names, where we need a VG name.

Yeah without `-r` the services will not be listed in `systemctl`, but
apparently their "deactivation" will still be logged.

Regardless, FYI, the following works too (there might still be room
for improvement though):

$ git diff /{usr/lib,etc}/udev/rules.d/69-dm-lvm.rules
diff --git a/usr/lib/udev/rules.d/69-dm-lvm.rules
b/etc/udev/rules.d/69-dm-lvm.rules
index 1a6b450..abf5396 100644
--- a/usr/lib/udev/rules.d/69-dm-lvm.rules
+++ b/etc/udev/rules.d/69-dm-lvm.rules
@@ -13,6 +13,7 @@ ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="lvm_end"
 # Only process devices already marked as a PV - this requires blkid
to be called before.
 ENV{ID_FS_TYPE}!="LVM2_member", GOTO="lvm_end"
 ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="lvm_end"
+ACTION=="remove", ENV{LVM_VG_NAME_COMPLETE}=="?*",
RUN+="/usr/bin/systemctl stop lvm-activate@$env{LVM_VG_NAME_COMPLETE}"
 ACTION=="remove", GOTO="lvm_end"

 # Create /dev/disk/by-id/lvm-pv-uuid-<PV_UUID> symlink for each PV
@@ -80,7 +81,7 @@ ENV{SYSTEMD_READY}="1"
 # it's better suited to appearing in the journal.

 IMPORT{program}="/usr/bin/lvm pvscan --cache --listvg --checkcomplete
--vgonline --udevoutput --journal=output $env{DEVNAME}"
-ENV{LVM_VG_NAME_COMPLETE}=="?*", RUN+="/usr/bin/systemd-run -r
--no-block --property DefaultDependencies=no --unit
lvm-activate-$env{LVM_VG_NAME_COMPLETE} /usr/bin/lvm vgchange -aay
--nohints $env{LVM_VG_NAME_COMPLETE}"
+ENV{LVM_VG_NAME_COMPLETE}=="?*", RUN+="/usr/bin/systemctl start
lvm-activate@$env{LVM_VG_NAME_COMPLETE}"
 GOTO="lvm_end"

 LABEL="lvm_end"

$ cat /etc/systemd/system/lvm-activate\@.service
[Unit]
DefaultDependencies=no

[Service]
RemainAfterExit=yes
ExecStart=/usr/bin/lvm vgchange -aay --nohints %i

>
> The behavior of repeated VG autoactivation is not entirely well defined,
> but we've made some attempt to maintain the status quo.  We may add an
> lvm.conf setting at some point to control that behavior if issues appear.
>
> > I also saw this PR on github. I'm not sure if what it stated makes any
> > sense though: https://github.com/lvmteam/lvm2/pull/37
>
> I'm not sure about that, those generated services don't get much attention
> and we've begun asking around to see if they could be removed.
>
> Dave
>

_______________________________________________
linux-lvm mailing list
[email protected]
https://listman.redhat.com/mailman/listinfo/linux-lvm
read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.