diff options
Diffstat (limited to 'core/mdadm/mdadm-fix-udev-rules.patch')
-rw-r--r-- | core/mdadm/mdadm-fix-udev-rules.patch | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/core/mdadm/mdadm-fix-udev-rules.patch b/core/mdadm/mdadm-fix-udev-rules.patch new file mode 100644 index 000000000..60f5ae131 --- /dev/null +++ b/core/mdadm/mdadm-fix-udev-rules.patch @@ -0,0 +1,137 @@ +diff --git a/Makefile b/Makefile +index b6edb23..bedef96 100644 +--- a/Makefile ++++ b/Makefile +@@ -253,8 +253,9 @@ + $(INSTALL) -D -m 644 md.4 $(DESTDIR)$(MAN4DIR)/md.4 + $(INSTALL) -D -m 644 mdadm.conf.5 $(DESTDIR)$(MAN5DIR)/mdadm.conf.5 + +-install-udev: udev-md-raid.rules +- $(INSTALL) -D -m 644 udev-md-raid.rules $(DESTDIR)/lib/udev/rules.d/64-md-raid.rules ++install-udev: udev-md-raid-arrays.rules udev-md-raid-assembly.rules ++ $(INSTALL) -D -m 644 udev-md-raid-arrays.rules $(DESTDIR)/usr/lib/udev/rules.d/63-md-raid-arrays.rules ++ $(INSTALL) -D -m 644 udev-md-raid-assembly.rules $(DESTDIR)/usr/lib/udev/rules.d/64-md-raid-assembly.rules + + uninstall: + rm -f $(DESTDIR)$(MAN8DIR)/mdadm.8 $(DESTDIR)$(MAN8DIR)/mdmon.8 $(DESTDIR)$(MAN4DIR)/md.4 $(DESTDIR)$(MAN5DIR)/mdadm.conf.5 $(DESTDIR)$(BINDIR)/mdadm +diff --git a/udev-md-raid-arrays.rules b/udev-md-raid-arrays.rules +new file mode 100644 +index 0000000..883ee4d +--- /dev/null ++++ b/udev-md-raid-arrays.rules +@@ -0,0 +1,35 @@ ++# do not edit this file, it will be overwritten on update ++ ++SUBSYSTEM!="block", GOTO="md_end" ++ ++# handle md arrays ++ACTION!="add|change", GOTO="md_end" ++KERNEL!="md*", GOTO="md_end" ++ ++# partitions have no md/{array_state,metadata_version}, but should not ++# for that reason be ignored. ++ENV{DEVTYPE}=="partition", GOTO="md_ignore_state" ++ ++# container devices have a metadata version of e.g. 'external:ddf' and ++# never leave state 'inactive' ++ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state" ++TEST!="md/array_state", ENV{SYSTEMD_READY}="0", GOTO="md_end" ++ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0", GOTO="md_end" ++LABEL="md_ignore_state" ++ ++IMPORT{program}="/sbin/mdadm --detail --export $devnode" ++ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}", OPTIONS+="string_escape=replace" ++ENV{DEVTYPE}=="disk", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}" ++ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}" ++ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n", OPTIONS+="string_escape=replace" ++ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}-part%n" ++ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[^0-9]", SYMLINK+="md/$env{MD_DEVNAME}%n" ++ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[0-9]", SYMLINK+="md/$env{MD_DEVNAME}p%n" ++ ++IMPORT{builtin}="blkid" ++OPTIONS+="link_priority=100" ++OPTIONS+="watch" ++ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" ++ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" ++ ++LABEL="md_end" +diff --git a/udev-md-raid-assembly.rules b/udev-md-raid-assembly.rules +new file mode 100644 +index 0000000..b89775e +--- /dev/null ++++ b/udev-md-raid-assembly.rules +@@ -0,0 +1,19 @@ ++# do not edit this file, it will be overwritten on update ++ ++# assemble md arrays ++ ++SUBSYSTEM!="block", GOTO="md_inc_end" ++ ++# handle potential components of arrays (the ones supported by md) ++ENV{ID_FS_TYPE}=="ddf_raid_member|isw_raid_member|linux_raid_member", GOTO="md_inc" ++GOTO="md_inc_end" ++ ++LABEL="md_inc" ++ ++# remember you can limit what gets auto/incrementally assembled by ++# mdadm.conf(5)'s 'AUTO' and selectively whitelist using 'ARRAY' ++ACTION=="add", RUN+="/sbin/mdadm --incremental $devnode --offroot" ++ACTION=="remove", ENV{ID_PATH}=="?*", RUN+="/sbin/mdadm -If $name --path $env{ID_PATH}" ++ACTION=="remove", ENV{ID_PATH}!="?*", RUN+="/sbin/mdadm -If $name" ++ ++LABEL="md_inc_end" +diff --git a/udev-md-raid.rules b/udev-md-raid.rules +deleted file mode 100644 +index cc7f5ef..0000000 +--- a/udev-md-raid.rules ++++ /dev/null +@@ -1,49 +0,0 @@ +-# do not edit this file, it will be overwritten on update +- +-SUBSYSTEM!="block", GOTO="md_end" +- +-# handle potential components of arrays (the ones supported by md) +-ENV{ID_FS_TYPE}=="ddf_raid_member|isw_raid_member|linux_raid_member", GOTO="md_inc" +-GOTO="md_inc_skip" +- +-LABEL="md_inc" +- +-# remember you can limit what gets auto/incrementally assembled by +-# mdadm.conf(5)'s 'AUTO' and selectively whitelist using 'ARRAY' +-ACTION=="add", RUN+="/sbin/mdadm --incremental $tempnode --offroot" +-ACTION=="remove", ENV{ID_PATH}=="?*", RUN+="/sbin/mdadm -If $name --path $env{ID_PATH}" +-ACTION=="remove", ENV{ID_PATH}!="?*", RUN+="/sbin/mdadm -If $name" +- +-LABEL="md_inc_skip" +- +-# handle md arrays +-ACTION!="add|change", GOTO="md_end" +-KERNEL!="md*", GOTO="md_end" +- +-# partitions have no md/{array_state,metadata_version}, but should not +-# for that reason be ignored. +-ENV{DEVTYPE}=="partition", GOTO="md_ignore_state" +- +-# container devices have a metadata version of e.g. 'external:ddf' and +-# never leave state 'inactive' +-ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state" +-TEST!="md/array_state", ENV{SYSTEMD_READY}="0", GOTO="md_end" +-ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0", GOTO="md_end" +-LABEL="md_ignore_state" +- +-IMPORT{program}="/sbin/mdadm --detail --export $tempnode" +-ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}", OPTIONS+="string_escape=replace" +-ENV{DEVTYPE}=="disk", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}" +-ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}" +-ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n", OPTIONS+="string_escape=replace" +-ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}-part%n" +-ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[^0-9]", SYMLINK+="md/$env{MD_DEVNAME}%n" +-ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[0-9]", SYMLINK+="md/$env{MD_DEVNAME}p%n" +- +-IMPORT{program}="/sbin/blkid -o udev -p $tempnode" +-OPTIONS+="link_priority=100" +-OPTIONS+="watch" +-ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" +-ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" +- +-LABEL="md_end" |