# 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"
It's expected behavior for MD_LEVEL not to be set for inactive raid devices. Looking at 64-md-raid.rules,
# do not edit this file, it will be overwritten on update
SUBSYSTEM!="block", GOTO="md_end"
# handle md arrays ="add|change" , GOTO="md_end"
ACTION!
KERNEL!="md*", GOTO="md_end"
# partitions have no md/{array_ state,metadata_ version} , but should not =="partition" , GOTO="md_ ignore_ state"
# for that reason be ignored.
ENV{DEVTYPE}
# container devices have a metadata version of e.g. 'external:ddf' and metadata_ version} =="external: [A-Za-z] *", ATTR{md/ array_state} =="inactive" , GOTO="md_ ignore_ state" <== md/array_ state", ENV{SYSTEMD_ READY}= "0", GOTO="md_end" array_state} =="|clear| inactive" , ENV{SYSTEMD_ READY}= "0", GOTO="md_end" md_ignore_ state"
# never leave state 'inactive'
ATTR{md/
TEST!="
ATTR{md/
LABEL="
IMPORT{ program} ="/sbin/ mdadm --detail --export $devnode" =="disk" , ENV{MD_NAME}=="?*", SYMLINK+ ="disk/ by-id/md- name-$env{ MD_NAME} ", OPTIONS+ ="string_ escape= replace"
ENV{DEVTYPE}
<SNIP>
LABEL="md_end"
So IMPORT{ program} ="/sbin/ mdadm --detail --export $devnode" is skipped if the array is inactive.