PATH:
usr
/
lib
/
udev
/
rules.d
# 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" # Ignore PVs on LVs. # This is usually a case of an LV being used for a guest VM # image, where the guest is using lvm. The host should # ignore lvm data from the guest and not attempt to scan or # activate guest PVs/LVs. (To enable functions in this file # for PVs layered on LVs, set LVM_PVSCAN_ON_LVS="1" from a # custom udev rule.) ENV{ID_FS_TYPE}=="LVM2_member", ENV{DM_UUID}=="LVM-?*", ENV{LVM_PVSCAN_ON_LVS}!="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/bin/systemd-run --no-block --property DefaultDependencies=no --unit lvm-activate-$env{LVM_VG_NAME_COMPLETE} /usr/sbin/lvm vgchange -aay --autoactivation event $env{LVM_VG_NAME_COMPLETE}" GOTO="lvm_end" LABEL="lvm_end"
[-] 65-scsi-cciss_id.rules
[edit]
[-] 60-evdev.rules
[edit]
[-] 91-drm-modeset.rules
[edit]
[-] 90-vconsole.rules
[edit]
[-] 60-cdrom_id.rules
[edit]
[-] 65-persistent-net-nbft.rules
[edit]
[-] 90-iprutils.rules
[edit]
[-] 70-uaccess.rules
[edit]
[-] 99-nfs.rules
[edit]
[-] 11-dm-mpath.rules
[edit]
[-] README
[edit]
[-] 71-nvmf-netapp.rules
[edit]
[-] 68-del-part-nodes.rules
[edit]
[-] 60-persistent-storage-tape.rules
[edit]
[-] 60-persistent-v4l.rules
[edit]
[-] 01-md-raid-creating.rules
[edit]
[-] 60-serial.rules
[edit]
[-] 80-drivers.rules
[edit]
[-] 60-sensor.rules
[edit]
[-] 70-nvmf-keys.rules
[edit]
[-] 62-multipath.rules
[edit]
[-] 75-probe_mtd.rules
[edit]
[-] 75-net-description.rules
[edit]
[-] 80-net-setup-link.rules
[edit]
[-] 60-net.rules
[edit]
[-] 71-seat.rules
[edit]
[-] 84-nm-drivers.rules
[edit]
[-] 11-dm-parts.rules
[edit]
[-] 66-kpartx.rules
[edit]
[-] 70-joystick.rules
[edit]
[-] 40-redhat.rules
[edit]
[-] 11-dm-lvm.rules
[edit]
[-] 70-touchpad.rules
[edit]
[-] 40-elevator.rules
[edit]
[-] 60-drm.rules
[edit]
[-] 70-libfprint-2.rules
[edit]
[-] 63-fc-wwpn-id.rules
[edit]
[-] 98-kexec.rules
[edit]
[-] 85-nm-unmanaged.rules
[edit]
[-] 60-input-id.rules
[edit]
[-] 40-usb-blacklist.rules
[edit]
[-] 61-scsi-sg3_id.rules
[edit]
[-] 90-nm-thunderbolt.rules
[edit]
[-] 70-power-switch.rules
[edit]
[-] 60-block.rules
[edit]
[-] 60-persistent-alsa.rules
[edit]
[-] 69-md-clustered-confirm-device.rules
[edit]
[-] 63-scsi-sg3_symlink.rules
[edit]
[-] 69-dm-lvm.rules
[edit]
[-] 60-persistent-storage.rules
[edit]
[-] 95-dm-notify.rules
[edit]
[+]
..
[-] 60-persistent-input.rules
[edit]
[-] 64-md-raid-assembly.rules
[edit]
[-] 70-camera.rules
[edit]
[-] 70-mouse.rules
[edit]
[-] 60-fido-id.rules
[edit]
[-] 71-prefixdevname.rules
[edit]
[-] 63-md-raid-arrays.rules
[edit]
[-] 90-pipewire-alsa.rules
[edit]
[-] 95-upower-wup.rules
[edit]
[-] 50-udev-default.rules
[edit]
[-] 13-dm-disk.rules
[edit]
[-] 60-tpm-udev.rules
[edit]
[-] 99-systemd.rules
[edit]
[-] 73-seat-late.rules
[edit]
[-] 64-btrfs.rules
[edit]
[-] 70-memory.rules
[edit]
[-] 81-net-dhcp.rules
[edit]
[-] 60-autosuspend.rules
[edit]
[-] 95-upower-hid.rules
[edit]
[-] 70-nvmf-autoconnect.rules
[edit]
[-] 78-sound-card.rules
[edit]
[-] 66-md-auto-readd.rules
[edit]
[-] 10-dm.rules
[edit]