We need to attempt "mdadm -I" on "change" events as well as "add" events, as the "change" make make a device ready to be part of an array. This is particularly important for stacked md devices. When the member devices are "add"ed they don't have any content visible yet. That doesn't happen until a "change". Idea taken from Fedora udev file. Signed-off-by: NeilBrown <neilb@suse.de>
36 lines
1.3 KiB
Plaintext
36 lines
1.3 KiB
Plaintext
# do not edit this file, it will be overwritten on update
|
|
|
|
# Don't process any events if anaconda is running as anaconda brings up
|
|
# raid devices manually
|
|
ENV{ANACONDA}=="?*", GOTO="md_inc_end"
|
|
# assemble md arrays
|
|
|
|
SUBSYSTEM!="block", GOTO="md_inc_end"
|
|
|
|
# handle potential components of arrays (the ones supported by md)
|
|
ENV{ID_FS_TYPE}=="linux_raid_member", GOTO="md_inc"
|
|
|
|
# "noiswmd" on kernel command line stops mdadm from handling
|
|
# "isw" (aka IMSM - Intel RAID).
|
|
# "nodmraid" on kernel command line stops mdadm from handling
|
|
# "isw" or "ddf".
|
|
IMPORT{cmdline}="noiswmd"
|
|
IMPORT{cmdline}="nodmraid"
|
|
|
|
ENV{nodmraid}=="?*", GOTO="md_inc_end"
|
|
ENV{ID_FS_TYPE}=="ddf_raid_member", GOTO="md_inc"
|
|
ENV{noiswmd}=="?*", GOTO="md_inc_end"
|
|
ENV{ID_FS_TYPE}=="isw_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|change", IMPORT{program}="/sbin/mdadm --incremental --export $devnode --offroot ${DEVLINKS}"
|
|
ACTION=="add|change", ENV{MD_STARTED}=="*unsafe*", ENV{MD_FOREIGN}=="no", ENV{SYSTEMD_WANTS}+="mdadm-last-resort@$env{MD_DEVICE}.timer"
|
|
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"
|