← Documents Documentation/admin-guide/device-mapper/dm-uevent.rst GitHub 원문 ↗

Linux 6.18.37 · Administration / Device Mapper

device-mapper uevent

Device-mapper path event를 kobject uevent로 전송하는 함수, DM_* 환경 변수와 failure·reinstate 예제입니다.

Source pathDocumentation/admin-guide/device-mapper/dm-uevent.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

Uevent interface

dm-uevent.rst:1-20

Context-rich event 생성·전송 함수와 ioctl 방식의 차이를 설명합니다.

환경 변수

dm-uevent.rst:21-74

Target, action, sequence, path 수와 mapped-device identity 필드를 정리합니다.

Failure와 reinstate

dm-uevent.rst:75-110

Udevmonitor 캡처에서 action·sequence·valid path 변화를 비교합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 ====================
2 device-mapper uevent
3 ====================
4
5 The device-mapper uevent code adds the capability to device-mapper to create
6 and send kobject uevents (uevents). Previously device-mapper events were only
7 available through the ioctl interface. The advantage of the uevents interface
8 is the event contains environment attributes providing increased context for
9 the event avoiding the need to query the state of the device-mapper device after
10 the event is received.
11
12 There are two functions currently for device-mapper events. The first function
13 listed creates the event and the second function sends the event(s)::
14
15 void dm_path_uevent(enum dm_uevent_type event_type, struct dm_target *ti,
16 const char *path, unsigned nr_valid_paths)
17
18 void dm_send_uevents(struct list_head *events, struct kobject *kobj)
19
20
21 The variables added to the uevent environment are:
22
23 Variable Name: DM_TARGET
24 ------------------------
25 :Uevent Action(s): KOBJ_CHANGE
26 :Type: string
27 :Description:
28 :Value: Name of device-mapper target that generated the event.
29
30 Variable Name: DM_ACTION
31 ------------------------
32 :Uevent Action(s): KOBJ_CHANGE
33 :Type: string
34 :Description:
35 :Value: Device-mapper specific action that caused the uevent action.
36 PATH_FAILED - A path has failed;
37 PATH_REINSTATED - A path has been reinstated.
38
39 Variable Name: DM_SEQNUM
40 ------------------------
41 :Uevent Action(s): KOBJ_CHANGE
42 :Type: unsigned integer
43 :Description: A sequence number for this specific device-mapper device.
44 :Value: Valid unsigned integer range.
45
46 Variable Name: DM_PATH
47 ----------------------
48 :Uevent Action(s): KOBJ_CHANGE
49 :Type: string
50 :Description: Major and minor number of the path device pertaining to this
51 event.
52 :Value: Path name in the form of "Major:Minor"
53
54 Variable Name: DM_NR_VALID_PATHS
55 --------------------------------
56 :Uevent Action(s): KOBJ_CHANGE
57 :Type: unsigned integer
58 :Description:
59 :Value: Valid unsigned integer range.
60
61 Variable Name: DM_NAME
62 ----------------------
63 :Uevent Action(s): KOBJ_CHANGE
64 :Type: string
65 :Description: Name of the device-mapper device.
66 :Value: Name
67
68 Variable Name: DM_UUID
69 ----------------------
70 :Uevent Action(s): KOBJ_CHANGE
71 :Type: string
72 :Description: UUID of the device-mapper device.
73 :Value: UUID. (Empty string if there isn't one.)
74
75 An example of the uevents generated as captured by udevmonitor is shown
76 below
77
78 1.) Path failure::
79
80 UEVENT[1192521009.711215] change@/block/dm-3
81 ACTION=change
82 DEVPATH=/block/dm-3
83 SUBSYSTEM=block
84 DM_TARGET=multipath
85 DM_ACTION=PATH_FAILED
86 DM_SEQNUM=1
87 DM_PATH=8:32
88 DM_NR_VALID_PATHS=0
89 DM_NAME=mpath2
90 DM_UUID=mpath-35333333000002328
91 MINOR=3
92 MAJOR=253
93 SEQNUM=1130
94
95 2.) Path reinstate::
96
97 UEVENT[1192521132.989927] change@/block/dm-3
98 ACTION=change
99 DEVPATH=/block/dm-3
100 SUBSYSTEM=block
101 DM_TARGET=multipath
102 DM_ACTION=PATH_REINSTATED
103 DM_SEQNUM=2
104 DM_PATH=8:32
105 DM_NR_VALID_PATHS=1
106 DM_NAME=mpath2
107 DM_UUID=mpath-35333333000002328
108 MINOR=3
109 MAJOR=253
110 SEQNUM=1131
111

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

상태 context를 포함하는 kobject uevent

1-20

Device-mapper uevent 코드는 device-mapper가 kobject uevent를 생성하고 전송할 수 있게 합니다. 이전에는 device-mapper event를 ioctl interface로만 받을 수 있었습니다.

Uevent interface의 장점은 event 자체에 환경 속성이 들어 있어 더 많은 context를 제공한다는 점입니다. 따라서 event 수신 후 device-mapper 장치 상태를 다시 query할 필요가 없습니다.

Ioctl event와 uevent 차이
기존 ioctl eventEvent 수신장치 상태 추가 query원인 해석
Kobject uevent환경 속성 포함 event 수신즉시 원인·상태 해석

Uevent는 원인과 path 상태를 payload에 포함해 후속 상태 조회를 줄입니다.

현재 device-mapper event에는 두 함수가 있습니다. `dm_path_uevent()`가 event를 만들고 `dm_send_uevents()`가 하나 이상의 event를 전송합니다.

  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)
Device-mapper uevent 함수 경로
`event_type`, target, path, valid-path 수`dm_path_uevent()`Event list`dm_send_uevents()`Kobject uevent

Target path 상태로 event를 만든 뒤 kobject를 통해 전송합니다.

DM_TARGET·DM_ACTION·DM_SEQNUM

21-44

모든 변수는 `KOBJ_CHANGE` action의 uevent 환경에 추가됩니다.

Event identity 환경 변수
변수Type
`DM_TARGET`stringEvent를 생성한 device-mapper target 이름
`DM_ACTION`string`PATH_FAILED`는 path 실패, `PATH_REINSTATED`는 path 복구
`DM_SEQNUM`unsigned integer이 device-mapper 장치에만 적용되는 유효 범위의 sequence number

Event 생성 target, device-mapper 고유 action과 장치별 순번을 제공합니다.

DM_PATH·DM_NR_VALID_PATHS·DM_NAME·DM_UUID

45-74
Path와 mapped-device 환경 변수
변수Type
`DM_PATH`stringEvent 관련 path device의 major:minor를 `Major:Minor` 형식으로 표현
`DM_NR_VALID_PATHS`unsigned integer현재 유효 path 수
`DM_NAME`stringDevice-mapper 장치 이름
`DM_UUID`stringDevice-mapper UUID, 없으면 빈 문자열

Event가 가리키는 path와 해당 device-mapper 장치 identity를 담습니다.

Multipath event context
`DM_TARGET``DM_ACTION``DM_PATH``DM_NR_VALID_PATHS``DM_NAME` + `DM_UUID`

하나의 payload가 target, action, path, 남은 path 수와 mapped-device identity를 결합합니다.

Path failure와 reinstate 캡처

75-110

다음은 `udevmonitor`가 캡처한 path failure event입니다. Multipath target `mpath2`의 path `8:32`가 실패했고 유효 path 수가 0이 되었습니다. Device-mapper sequence는 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

두 번째 event는 같은 path가 복구된 경우입니다. `DM_ACTION`이 `PATH_REINSTATED`, 유효 path 수가 1, `DM_SEQNUM`이 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
두 uevent의 변화
필드Path failurePath reinstate
`ACTION``change``change`
`DM_TARGET``multipath``multipath`
`DM_ACTION``PATH_FAILED``PATH_REINSTATED`
`DM_SEQNUM`12
`DM_PATH``8:32``8:32`
`DM_NR_VALID_PATHS`01
`DM_NAME``mpath2``mpath2`
Kernel `SEQNUM`11301131

동일 mapped device와 path에서 action, valid-path 수와 sequence가 바뀝니다.