device-mapper uevent¶
device-mapper uevent 代码为 device-mapper 添加了创建和发送 kobject uevent (uevent) 的功能。之前,device-mapper 事件仅可通过 ioctl 接口获得。uevents 接口的优点是事件包含环境变量属性,为事件提供了更丰富的上下文,避免了在接收事件后需要查询 device-mapper 设备的状态。
目前有两个用于 device-mapper 事件的函数。列出的第一个函数创建事件,第二个函数发送事件。
void dm_path_uevent(enum dm_uevent_type event_type, struct dm_target *ti,
const char *path, unsigned nr_valid_paths)
void dm_send_uevents(struct list_head *events, struct kobject *kobj)
添加到 uevent 环境中的变量是
变量名:DM_TARGET¶
- Uevent 操作:
KOBJ_CHANGE
- 类型:
字符串
- 描述:
- 值:
生成该事件的 device-mapper 目标的名称。
变量名:DM_ACTION¶
- Uevent 操作:
KOBJ_CHANGE
- 类型:
字符串
- 描述:
- 值:
导致 uevent 操作的 device-mapper 特定操作。PATH_FAILED - 路径已失败;PATH_REINSTATED - 路径已恢复。
变量名:DM_SEQNUM¶
- Uevent 操作:
KOBJ_CHANGE
- 类型:
无符号整数
- 描述:
此特定 device-mapper 设备的序列号。
- 值:
有效的无符号整数范围。
变量名:DM_PATH¶
- Uevent 操作:
KOBJ_CHANGE
- 类型:
字符串
- 描述:
与此事件相关的路径设备的主设备号和次设备号。
- 值:
格式为“主设备号:次设备号”的路径名称
变量名:DM_NR_VALID_PATHS¶
- Uevent 操作:
KOBJ_CHANGE
- 类型:
无符号整数
- 描述:
- 值:
有效的无符号整数范围。
变量名:DM_NAME¶
- Uevent 操作:
KOBJ_CHANGE
- 类型:
字符串
- 描述:
device-mapper 设备的名称。
- 值:
名称
变量名:DM_UUID¶
- Uevent 操作:
KOBJ_CHANGE
- 类型:
字符串
- 描述:
device-mapper 设备的 UUID。
- 值:
UUID。(如果没有,则为空字符串。)
下面显示了由 udevmonitor 捕获的生成的 uevent 的示例
1.) 路径故障
UEVENT[1192521009.711215] change@/block/dm-3
ACTION=change
DEVPATH=/block/dm-3
SUBSYSTEM=block
DM_TARGET=multipath
DM_ACTION=PATH_FAILED
DM_SEQNUM=1
DM_PATH=8:32
DM_NR_VALID_PATHS=0
DM_NAME=mpath2
DM_UUID=mpath-35333333000002328
MINOR=3
MAJOR=253
SEQNUM=1130
2.) 路径恢复
UEVENT[1192521132.989927] change@/block/dm-3
ACTION=change
DEVPATH=/block/dm-3
SUBSYSTEM=block
DM_TARGET=multipath
DM_ACTION=PATH_REINSTATED
DM_SEQNUM=2
DM_PATH=8:32
DM_NR_VALID_PATHS=1
DM_NAME=mpath2
DM_UUID=mpath-35333333000002328
MINOR=3
MAJOR=253
SEQNUM=1131