public inbox for development@lists.ipfire.org
 help / color / mirror / Atom feed
* [PATCH 1/2] lvm: Fixes bug-13151 - update 69-dm-lvm.rules
@ 2023-06-18 18:02 Adolf Belka
  2023-06-18 18:02 ` [PATCH 2/2] update.sh: Fixes bug-13151 - removes old 69-dm-lvm-metad.rules file Adolf Belka
  0 siblings, 1 reply; 2+ messages in thread
From: Adolf Belka @ 2023-06-18 18:02 UTC (permalink / raw)
  To: development

[-- Attachment #1: Type: text/plain, Size: 4451 bytes --]

- Redhat updated lvm udev rule 69-dm-lvm.rules to only work with systemd
- Update 69-dm-lvm.rules to work with IPFire based on input from @Daniel of what worked
   to mount an existing lvm volume

Suggested-by: Daniel Weismüller <daniel.weismueller(a)ipfire.org>
Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
---
 config/lvm/69-dm-lvm.rules | 83 ++++++++++++++++++++++++++++++++++++++
 lfs/lvm2                   |  2 +
 2 files changed, 85 insertions(+)
 create mode 100644 config/lvm/69-dm-lvm.rules

diff --git a/config/lvm/69-dm-lvm.rules b/config/lvm/69-dm-lvm.rules
new file mode 100644
index 000000000..a1c6be14f
--- /dev/null
+++ b/config/lvm/69-dm-lvm.rules
@@ -0,0 +1,83 @@
+# Copyright (C) 2012,2021 Red Hat, Inc. All rights reserved.
+#
+# This file is part of LVM.
+#
+# This rule requires blkid to be called on block devices before so only devices
+# used as LVM PVs are processed (ID_FS_TYPE="LVM2_member").
+
+SUBSYSTEM!="block", GOTO="lvm_end"
+
+
+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", GOTO="lvm_end"
+
+# Create /dev/disk/by-id/lvm-pv-uuid-<PV_UUID> symlink for each PV
+ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-id/lvm-pv-uuid-$env{ID_FS_UUID_ENC}"
+
+# If the PV is a special device listed below, scan only if the device is
+# properly activated. These devices are not usable after an ADD event,
+# but they require an extra setup and they are ready after a CHANGE event.
+# Also support coldplugging with ADD event but only if the device is already
+# properly activated.
+# This logic should be eventually moved to rules where those particular
+# devices are processed primarily (MD and loop).
+
+# DM device:
+KERNEL!="dm-[0-9]*", GOTO="next"
+ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}=="1", ENV{DM_ACTIVATION}=="1", GOTO="lvm_scan"
+GOTO="lvm_end"
+
+# MD device:
+LABEL="next"
+KERNEL!="md[0-9]*", GOTO="next"
+IMPORT{db}="LVM_MD_PV_ACTIVATED"
+ACTION=="add", ENV{LVM_MD_PV_ACTIVATED}=="1", GOTO="lvm_scan"
+ACTION=="change", ENV{LVM_MD_PV_ACTIVATED}!="1", TEST=="md/array_state", ENV{LVM_MD_PV_ACTIVATED}="1", GOTO="lvm_scan"
+ACTION=="add", KERNEL=="md[0-9]*p[0-9]*", GOTO="lvm_scan"
+GOTO="lvm_end"
+
+# Loop device:
+LABEL="next"
+KERNEL!="loop[0-9]*", GOTO="next"
+ACTION=="add", ENV{LVM_LOOP_PV_ACTIVATED}=="1", GOTO="lvm_scan"
+ACTION=="change", ENV{LVM_LOOP_PV_ACTIVATED}!="1", TEST=="loop/backing_file", ENV{LVM_LOOP_PV_ACTIVATED}="1", GOTO="lvm_scan"
+GOTO="lvm_end"
+
+LABEL="next"
+ACTION!="add", GOTO="lvm_end"
+
+LABEL="lvm_scan"
+
+# pvscan will check if this device completes a VG,
+# i.e. all PVs in the VG are now present with the
+# arrival of this PV.  If so, it prints to stdout:
+# LVM_VG_NAME_COMPLETE='foo'
+#
+# When the VG is complete it can be activated, so
+# vgchange -aay <vgname> is run.  It is run via
+# systemd since it can take longer to run than
+# udev wants to block when processing rules.
+# (if there are hundreds of LVs to activate,
+# the vgchange can take many seconds.)
+#
+# pvscan only reads the single device specified,
+# and uses temp files under /run/lvm to check if
+# other PVs in the VG are present.
+#
+# If event_activation=0 in lvm.conf, this pvscan
+# (using checkcomplete) will do nothing, so that
+# no event-based autoactivation will be happen.
+#
+# TODO: adjust the output of vgchange -aay so that
+# it's better suited to appearing in the journal.
+
+IMPORT{program}="/usr/sbin/lvm pvscan --cache --listvg --checkcomplete --vgonline --autoactivation event --udevoutput --journal=output $env{DEVNAME}"
+ENV{LVM_VG_NAME_COMPLETE}=="?*", RUN+="/usr/sbin/lvm vgchange -aay --autoactivation event $env{LVM_VG_NAME_COMPLETE}"
+GOTO="lvm_end"
+
+LABEL="lvm_end"
+
diff --git a/lfs/lvm2 b/lfs/lvm2
index 2f1e921fc..4e2bd6235 100644
--- a/lfs/lvm2
+++ b/lfs/lvm2
@@ -85,5 +85,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 			--enable-udev_sync
 	cd $(DIR_APP) && make $(MAKETUNING)
 	cd $(DIR_APP) && make install
+	# copy the tailored lvm udev rules file that will mount volumes without systemd
+	cp -rf $(DIR_SRC)/config/lvm/69-dm-lvm.rules /lib/udev/rules.d/
 	@rm -rf $(DIR_APP)
 	@$(POSTBUILD)
-- 
2.41.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH 2/2] update.sh: Fixes bug-13151 - removes old 69-dm-lvm-metad.rules file
  2023-06-18 18:02 [PATCH 1/2] lvm: Fixes bug-13151 - update 69-dm-lvm.rules Adolf Belka
@ 2023-06-18 18:02 ` Adolf Belka
  0 siblings, 0 replies; 2+ messages in thread
From: Adolf Belka @ 2023-06-18 18:02 UTC (permalink / raw)
  To: development

[-- Attachment #1: Type: text/plain, Size: 803 bytes --]

- In Core Update 175 lvm was updated and 69-dm-lvm-metad.rules was replaced with
   69-dm-lvm.rules in the lvm rootfile.
- That previous patch update did not remove the no longer existing 69-dm-lvm-metad.rules
   from existing installations. This patch corrects that.

Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
---
 config/rootfiles/core/176/update.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/config/rootfiles/core/176/update.sh b/config/rootfiles/core/176/update.sh
index b5f48b726..d97e29444 100644
--- a/config/rootfiles/core/176/update.sh
+++ b/config/rootfiles/core/176/update.sh
@@ -40,6 +40,7 @@ extract_files
 # Remove files
 rm -vf \
 	/usr/bin/gawk-5.1.1
+	/lib/udev/rules.d/69-dm-lvm-metad.rules
 
 # update linker config
 ldconfig
-- 
2.41.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-06-18 18:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-18 18:02 [PATCH 1/2] lvm: Fixes bug-13151 - update 69-dm-lvm.rules Adolf Belka
2023-06-18 18:02 ` [PATCH 2/2] update.sh: Fixes bug-13151 - removes old 69-dm-lvm-metad.rules file Adolf Belka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox