r849 - in lvm2/trunk/debian: . tree/dmsetup/lib/udev/rules.d tree/lvm2/lib/udev/rules.d

Bastian Blank waldi at alioth.debian.org
Mon Feb 21 21:22:42 UTC 2011


Author: waldi
Date: Mon Feb 21 21:22:42 2011
New Revision: 849

Log:
* debian/changelog: Update.
* debian/tree/dmsetup/lib/udev/rules.d/55-dm.rules,
  debian/tree/dmsetup/lib/udev/rules.d/60-persistent-storage-dm.rules,
  debian/tree/lvm2/lib/udev/rules.d/56-lvm.rules,
  debian/tree/lvm2/lib/udev/rules.d/60-persistent-storage-lvm.rules:
  Update rules.

Modified:
   lvm2/trunk/debian/changelog
   lvm2/trunk/debian/tree/dmsetup/lib/udev/rules.d/55-dm.rules
   lvm2/trunk/debian/tree/dmsetup/lib/udev/rules.d/60-persistent-storage-dm.rules
   lvm2/trunk/debian/tree/lvm2/lib/udev/rules.d/56-lvm.rules
   lvm2/trunk/debian/tree/lvm2/lib/udev/rules.d/60-persistent-storage-lvm.rules

Modified: lvm2/trunk/debian/changelog
==============================================================================
--- lvm2/trunk/debian/changelog	Mon Feb 21 21:22:02 2011	(r848)
+++ lvm2/trunk/debian/changelog	Mon Feb 21 21:22:42 2011	(r849)
@@ -1,6 +1,7 @@
 lvm2 (2.02.84-1) UNRELEASED; urgency=low
 
   * New upstream version.
+  * Adopt upstream changes in udev rules.
 
  -- Bastian Blank <waldi at debian.org>  Thu, 17 Feb 2011 12:04:40 +0100
 

Modified: lvm2/trunk/debian/tree/dmsetup/lib/udev/rules.d/55-dm.rules
==============================================================================
--- lvm2/trunk/debian/tree/dmsetup/lib/udev/rules.d/55-dm.rules	Mon Feb 21 21:22:02 2011	(r848)
+++ lvm2/trunk/debian/tree/dmsetup/lib/udev/rules.d/55-dm.rules	Mon Feb 21 21:22:42 2011	(r849)
@@ -6,13 +6,6 @@
 SUBSYSTEM!="block", GOTO="dm_end"
 KERNEL!="dm-[0-9]*", GOTO="dm_end"
 
-# There is a new change event generated in block layer since kernel
-# version 2.6.32. It adds notification for changes in read-only
-# attribute. We don't want to misinterpret the regular meaning of change
-# events for DM devices and we don't want to apply the rules prematurely,
-# therefore we disable them in this situation.
-ENV{DISK_RO}=="1", GOTO="dm_disable"
-
 # Decode udev control flags and set environment variables appropriately.
 # These flags are encoded in DM_COOKIE variable that was introduced in
 # kernel version 2.6.31. Therefore, we can use this feature with
@@ -20,13 +13,21 @@
 ENV{DM_COOKIE}=="?*", IMPORT{program}="/sbin/dmsetup udevflags $env{DM_COOKIE}"
 ENV{DM_COOKIE}=="?*", RUN+="/sbin/dmsetup udevcomplete $env{DM_COOKIE}"
 
-# Normally, we would test for DM_UDEV_DISABLE_DM_RULES_FLAG here and skip
-# the rules if set. However, we need to set DM_* environment variables
-# for now to properly filter out inappropriate events. This dependency
-# might be removed in the future.
-
+# Device created, major and minor number assigned - "add" event generated.
+# Table loaded - no event generated.
+# Device resumed (or renamed) - "change" event generated.
+# Device removed - "remove" event generated.
+#
+# The dm-X nodes are always created, even on "add" event, we can't suppress
+# that (the node is created even earlier with devtmpfs). All the symlinks
+# (e.g. /dev/mapper) are created in right time after a device has its table
+# loaded and is properly resumed. For this reason, direct use of dm-X nodes
+# is not recommended.
 ACTION!="add|change", GOTO="dm_end"
 
+# Rule out easy-to-detect inappropriate events first.
+ENV{DISK_RO}=="1", GOTO="dm_disable"
+
 # There is no cookie set nor any flags encoded in events not originating
 # in libdevmapper so we need to detect this and try to behave correctly.
 # For such spurious events, regenerate all flags from current udev database content
@@ -38,6 +39,7 @@
 IMPORT{db}="DM_UDEV_DISABLE_OTHER_RULES_FLAG"
 IMPORT{db}="DM_UDEV_LOW_PRIORITY_FLAG"
 IMPORT{db}="DM_UDEV_DISABLE_LIBRARY_FALLBACK_FLAG"
+IMPORT{db}="DM_UDEV_PRIMARY_SOURCE_FLAG"
 IMPORT{db}="DM_UDEV_FLAG7"
 IMPORT{db}="DM_SUBSYSTEM_UDEV_FLAG0"
 IMPORT{db}="DM_SUBSYSTEM_UDEV_FLAG1"
@@ -47,14 +49,22 @@
 IMPORT{db}="DM_SUBSYSTEM_UDEV_FLAG5"
 IMPORT{db}="DM_SUBSYSTEM_UDEV_FLAG6"
 IMPORT{db}="DM_SUBSYSTEM_UDEV_FLAG7"
+IMPORT{db}="DM_UDEV_RULES"
 LABEL="dm_flags_done"
 
-# Normally, we operate on "change" events only. But when
-# coldplugging, there's an "add" event present. We have to
-# recognize this and do our actions in this particular
-# situation, too. Also, we don't want the nodes to be
-# created prematurely on "add" events while not coldplugging.
-ACTION=="add", ENV{STARTUP}!="1", NAME="", GOTO="dm_end"
+# Normally, we operate on "change" events. But when coldplugging, there's an
+# "add" event present. We have to recognize this and do our actions in this
+# particular situation, too. Also, we don't want the nodes to be created
+# prematurely on "add" events while not coldplugging. We check
+# DM_UDEV_PRIMARY_SOURCE_FLAG to see if the device was activated correctly
+# before and if not, we ignore the "add" event totally. This way we can support
+# udev triggers generating "add" events (e.g. "udevadm trigger --action=add" or
+# "echo add > /sys/block/<dm_device>/uevent"). The trigger with "add" event is
+# also used at boot to reevaluate udev rules for all existing devices activated
+# before (e.g. in initrd). If udev is used in initrd, we require the udev init
+# script to not remove the existing udev database so we can reuse the information
+# stored at the time of device activation in the initrd.
+ACTION=="add", ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}!="1", GOTO="dm_disable"
 
 # "dm" sysfs subdirectory is available in newer versions of DM
 # only (kernels >= 2.6.29). We have to check for its existence
@@ -75,17 +85,18 @@
 
 ENV{DM_UDEV_RULES}="1"
 
-ENV{DM_NAME}=="?*", SYMLINK+="mapper/$env{DM_NAME}"
+ENV{DM_UDEV_DISABLE_DM_RULES_FLAG}!="1", ENV{DM_NAME}=="?*", SYMLINK+="mapper/$env{DM_NAME}"
 
 # We have to ignore further rule application for inappropriate events
 # and devices. But still send the notification if cookie exists.
-ENV{DM_UUID}=="mpath-?*", ENV{DM_ACTION}=="PATH_FAILED", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1"
-ENV{DM_UUID}=="CRYPT-TEMP-?*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1"
-ENV{DM_UUID}!="?*", ENV{DM_NAME}=="temporary-cryptsetup-?*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1"
-
-ENV{DM_SUSPENDED}=="1", ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}="1"
-
-ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}!="", ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}="1"
+ENV{DM_UUID}=="mpath-?*", ENV{DM_ACTION}=="PATH_FAILED", GOTO="dm_disable"
+ENV{DM_UUID}=="CRYPT-TEMP-?*", GOTO="dm_disable"
+ENV{DM_UUID}!="?*", ENV{DM_NAME}=="temporary-cryptsetup-?*", GOTO="dm_disable"
+
+# Avoid processing and scanning a DM device in the other (foreign)
+# rules if it is in suspended state. However, we still keep 'disk'
+# and 'DM subsystem' related rules enabled in this case.
+ENV{DM_SUSPENDED}=="1", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1"
 
 GOTO="dm_end"
 
@@ -93,5 +104,6 @@
 ENV{DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG}="1"
 ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}="1"
 ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1"
+OPTIONS:="nowatch"
 
 LABEL="dm_end"

Modified: lvm2/trunk/debian/tree/dmsetup/lib/udev/rules.d/60-persistent-storage-dm.rules
==============================================================================
--- lvm2/trunk/debian/tree/dmsetup/lib/udev/rules.d/60-persistent-storage-dm.rules	Mon Feb 21 21:22:02 2011	(r848)
+++ lvm2/trunk/debian/tree/dmsetup/lib/udev/rules.d/60-persistent-storage-dm.rules	Mon Feb 21 21:22:42 2011	(r849)
@@ -1,15 +1,16 @@
 # Udev rules for device-mapper devices.
 # See /usr/share/doc/dmsetup/README.udev for further information.
 
+ACTION!="add|change", GOTO="persistent_storage_dm_end"
 ENV{DM_UDEV_RULES}=="", GOTO="persistent_storage_dm_end"
+ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}=="1", GOTO="persistent_storage_dm_end"
 
-OPTIONS="link_priority=-100"
-ENV{DM_UUID}=="DMRAID-*", OPTIONS="link_priority=100"
+ENV{DM_UDEV_LOW_PRIORITY_FLAG}=="1", OPTIONS="link_priority=-100"
 
 SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}"
 ENV{DM_UUID}=="?*", SYMLINK+="disk/by-id/dm-uuid-$env{DM_UUID}"
 
-ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}!="", GOTO="persistent_storage_dm_end"
+ENV{DM_SUSPENDED}=="1", GOTO="persistent_storage_dm_end"
 
 IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
 ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"

Modified: lvm2/trunk/debian/tree/lvm2/lib/udev/rules.d/56-lvm.rules
==============================================================================
--- lvm2/trunk/debian/tree/lvm2/lib/udev/rules.d/56-lvm.rules	Mon Feb 21 21:22:02 2011	(r848)
+++ lvm2/trunk/debian/tree/lvm2/lib/udev/rules.d/56-lvm.rules	Mon Feb 21 21:22:42 2011	(r849)
@@ -1,14 +1,17 @@
 # Udev rules for LVM.
 # See /usr/share/doc/lvm2/README.udev for further information.
 
+ACTION!="add|change", GOTO="lvm_end"
 ENV{DM_UDEV_RULES}=="", GOTO="lvm_end"
 ENV{DM_UUID}!="LVM-?*", GOTO="lvm_end"
 
 # Use DM name and split it up into its VG/LV/layer constituents.
 IMPORT{program}="/sbin/dmsetup splitname --nameprefixes --noheadings --rows $env{DM_NAME}"
 
-# Do not create symlinks for hidden subdevices.
-ENV{DM_LV_NAME}=="?*_mimage_[0-9]*|pvmove?*|?*_vorigin", ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}="1"
-ENV{DM_LV_LAYER}=="?*", ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}="1"
+ENV{DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG}!="1", GOTO="lvm_end"
+
+ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}="1"
+ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1"
+OPTIONS:="nowatch"
 
 LABEL="lvm_end"

Modified: lvm2/trunk/debian/tree/lvm2/lib/udev/rules.d/60-persistent-storage-lvm.rules
==============================================================================
--- lvm2/trunk/debian/tree/lvm2/lib/udev/rules.d/60-persistent-storage-lvm.rules	Mon Feb 21 21:22:02 2011	(r848)
+++ lvm2/trunk/debian/tree/lvm2/lib/udev/rules.d/60-persistent-storage-lvm.rules	Mon Feb 21 21:22:42 2011	(r849)
@@ -1,10 +1,11 @@
 # Udev rules for LVM.
 # See /usr/share/doc/lvm2/README.udev for further information.
 
+ACTION!="add|change", GOTO="persistent_storage_lvm_end"
 ENV{DM_UDEV_RULES}=="", GOTO="persistent_storage_lvm_end"
 ENV{DM_UUID}!="LVM-?*", GOTO="persistent_storage_lvm_end"
-ENV{DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG}!="", GOTO="persistent_storage_lvm_end"
-ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}!="", GOTO="persistent_storage_lvm_end"
+
+ENV{DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG}=="1", GOTO="persistent_storage_lvm_end"
 
 ENV{DM_VG_NAME}=="?*", ENV{DM_LV_NAME}=="?*", ENV{DM_LV_LAYER}=="", SYMLINK+="$env{DM_VG_NAME}/$env{DM_LV_NAME}"
 



More information about the pkg-lvm-commits mailing list