\!/ KyuuKazami \!/

Path : /usr/share/dracut/modules.d/90mdraid/
Upload :
Current File : //usr/share/dracut/modules.d/90mdraid/65-md-incremental-imsm.rules

# This file causes block devices with Linux RAID (mdadm) signatures to
# automatically cause mdadm to be run.
# See udev(8) for syntax

ACTION!="add|change", GOTO="md_inc_end"
SUBSYSTEM!="block", GOTO="md_inc_end"
ENV{ID_FS_TYPE}!="linux_raid_member|isw_raid_member", GOTO="md_inc_end"

ENV{ID_FS_TYPE}=="isw_raid_member", ENV{rd_NO_MDIMSM}=="?*", GOTO="md_inc_end"

ENV{rd_NO_MD}=="?*", GOTO="md_inc_end"

PROGRAM=="/bin/sh -c 'for i in $sys/$devpath/holders/md[0-9]*; do [ -e $$i ] && exit 0; done; exit 1;' ", \
    GOTO="md_inc_end"

ENV{DEVTYPE}!="partition", \
    RUN+="/sbin/partx -d --nr 1-1024 $env{DEVNAME}"

KERNEL!="md*", IMPORT{program}="/sbin/mdadm --examine --export $tempnode"

# UUID CHECK

LABEL="do_md_inc"

LABEL="md_auto_end"

#
# Incrementally build the md array
#
RUN+="/sbin/mdadm -I $env{DEVNAME}"

RUN+="/bin/ln -s /sbin/md_finished.sh /initqueue-finished/md_finished.sh"

LABEL="md_inc_end"

#
# Handle non-container raid arrays
#
ACTION=="add|change", \
	KERNEL=="md[0-9]*|md/*", \
	ENV{MD_LEVEL}!="container", \
	ENV{MD_CONTAINER}!="?*", \
        ENV{rd_NO_MD}!="?*", \
	GOTO="do_raidstart"

GOTO="end_raidstart"

LABEL="do_raidstart"

RUN+="/bin/ln -sf /sbin/md_finished.sh /initqueue-finished/md_finished.sh"

# check if array is not inactive anymore
TEST=="md/array_state", ATTR{md/array_state}=="clean", ENV{MD_UUID}=="?*", GOTO="end_raidstart"

RUN+="/sbin/initqueue --timeout --onetime --name 51-mdraid_start --unique /sbin/mdraid_start"

LABEL="end_raidstart"

#
# Handle container raid arrays
#
ACTION=="add|change", \
	KERNEL=="md[0-9]*|md/*", \
	ENV{DEVTYPE}!="partition", \
	ENV{MD_LEVEL}=="container", \
        ENV{rd_NO_MD}!="?*", \
	GOTO="do_container"

GOTO="end_container"

LABEL="do_container"

RUN+="/bin/sh -c 'ln -s /sbin/md_finished.sh /initqueue-finished/md_finished.sh"

TEST=="md/array_state", ATTR{md/array_state}=="clean", ENV{MD_UUID}=="?*", GOTO="end_container"

RUN+="/sbin/initqueue --timeout --onetime --name 50-mdcontainer_start --unique --name mdcontainer_start-%k /sbin/mdcontainer_start $env{DEVNAME}"

LABEL="end_container"

@KyuuKazami