|  | The device-mapper uevent code adds the capability to device-mapper to create | 
|  | and send kobject uevents (uevents).  Previously device-mapper events were only | 
|  | available through the ioctl interface.  The advantage of the uevents interface | 
|  | is the event contains environment attributes providing increased context for | 
|  | the event avoiding the need to query the state of the device-mapper device after | 
|  | the event is received. | 
|  |  | 
|  | There are two functions currently for device-mapper events.  The first function | 
|  | listed creates the event and the second function sends the event(s). | 
|  |  | 
|  | 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) | 
|  |  | 
|  |  | 
|  | The variables added to the uevent environment are: | 
|  |  | 
|  | Variable Name: DM_TARGET | 
|  | Uevent Action(s): KOBJ_CHANGE | 
|  | Type: string | 
|  | Description: | 
|  | Value: Name of device-mapper target that generated the event. | 
|  |  | 
|  | Variable Name: DM_ACTION | 
|  | Uevent Action(s): KOBJ_CHANGE | 
|  | Type: string | 
|  | Description: | 
|  | Value: Device-mapper specific action that caused the uevent action. | 
|  | PATH_FAILED - A path has failed. | 
|  | PATH_REINSTATED - A path has been reinstated. | 
|  |  | 
|  | Variable Name: DM_SEQNUM | 
|  | Uevent Action(s): KOBJ_CHANGE | 
|  | Type: unsigned integer | 
|  | Description: A sequence number for this specific device-mapper device. | 
|  | Value: Valid unsigned integer range. | 
|  |  | 
|  | Variable Name: DM_PATH | 
|  | Uevent Action(s): KOBJ_CHANGE | 
|  | Type: string | 
|  | Description: Major and minor number of the path device pertaining to this | 
|  | event. | 
|  | Value: Path name in the form of "Major:Minor" | 
|  |  | 
|  | Variable Name: DM_NR_VALID_PATHS | 
|  | Uevent Action(s): KOBJ_CHANGE | 
|  | Type: unsigned integer | 
|  | Description: | 
|  | Value: Valid unsigned integer range. | 
|  |  | 
|  | Variable Name: DM_NAME | 
|  | Uevent Action(s): KOBJ_CHANGE | 
|  | Type: string | 
|  | Description: Name of the device-mapper device. | 
|  | Value: Name | 
|  |  | 
|  | Variable Name: DM_UUID | 
|  | Uevent Action(s): KOBJ_CHANGE | 
|  | Type: string | 
|  | Description: UUID of the device-mapper device. | 
|  | Value: UUID. (Empty string if there isn't one.) | 
|  |  | 
|  | An example of the uevents generated as captured by udevmonitor is shown | 
|  | below. | 
|  |  | 
|  | 1.) Path failure. | 
|  | 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.) Path reinstate. | 
|  | 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 |