SUBSYSTEM!="block",				GOTO="device_mapper_end"
KERNEL!="dm-*",					GOTO="device_mapper_end"
ACTION!="add|change",				GOTO="device_mapper_end"

# Obtain device status
IMPORT{program}="/sbin/dmsetup export -j%M -m%m"
ENV{DM_NAME}!="?*",				GOTO="device_mapper_end"

# these are temporary devices created by cryptsetup, we want to ignore them
# and also hide them from HAL
ENV{DM_NAME}=="temporary-cryptsetup-*",		OPTIONS="ignore_device"

# Make the device take the /dev/mapper name
OPTIONS+="string_escape=none", NAME="mapper/$env{DM_NAME}"
SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}"
ENV{DM_UUID}=="?*", SYMLINK+="disk/by-id/dm-uuid-$env{DM_UUID}"

# Add a symlink for LVM devices
ENV{DM_UUID}=="LVM-*", PROGRAM="/bin/sh -c 'set `lvm lvdisplay -C -o vg_name,lv_name --noheadings /dev/$name` ; echo $1/$2'", SYMLINK+="$result"

ENV{DM_STATE}=="SUSPENDED",			GOTO="device_mapper_end"
ENV{DM_TARGET_TYPES}=="|*error*",		GOTO="device_mapper_end"

# by-uuid and by-label symlinks
IMPORT{program}="/sbin/blkid -o udev -p $tempnode"

OPTIONS+="link_priority=-100"
OPTIONS+="watch"
ENV{DM_UUID}=="DMRAID-*", OPTIONS="link_priority=100"
ENV{DM_TARGET_TYPES}=="*snapshot-origin*", OPTIONS+="link_priority=-90"

ENV{ID_FS_UUID_ENC}=="?*",	ENV{ID_FS_USAGE}=="filesystem|other|crypto", \
	SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
ENV{ID_FS_LABEL_ENC}=="?*",	ENV{ID_FS_USAGE}=="filesystem|other", \
	SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"

LABEL="device_mapper_end"
