device-mapper uevent¶
device-mapper uevent 程式碼增加了 device-mapper 建立和傳送 kobject uevent(使用者事件)的能力。此前,device-mapper 事件僅透過 ioctl 介面提供。uevent 介面的優勢在於事件包含環境屬性,為事件提供了更多上下文,從而避免了在收到事件後查詢 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