123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- 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}="/usr/bin/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+="/usr/bin/mdadm --incremental $devnode --offroot"
- +ACTION=="remove", ENV{ID_PATH}=="?*", RUN+="/usr/bin/mdadm -If $name --path $env{ID_PATH}"
- +ACTION=="remove", ENV{ID_PATH}!="?*", RUN+="/usr/bin/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"
|