]> git.pld-linux.org Git - packages/lvm2.git/blame - device-mapper-dmsetup-export.patch
- disable initrd package
[packages/lvm2.git] / device-mapper-dmsetup-export.patch
CommitLineData
0a81c260
ER
1---
2 man/dmsetup.8.in | 7 ++++
3 tools/dmsetup.c | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 2 files changed, 95 insertions(+)
5
6Index: LVM2.2.02.98/man/dmsetup.8.in
7===================================================================
8--- LVM2.2.02.98.orig/man/dmsetup.8.in
9+++ LVM2.2.02.98/man/dmsetup.8.in
10@@ -17,10 +17,13 @@ dmsetup \- low level logical volume mana
11 .RB [{ \-\-addnodeoncreate | \-\-addnodeonresume }]
12 .RB [ \-\-readahead
13 .RI [ \+ ]< sectors >| auto | none ]
4cb4934b
JK
14 .RE
15 .br
16+.B dmsetup export
0a81c260 17+.I [ device_name ]
4cb4934b 18+.br
0a81c260
ER
19 .B dmsetup deps
20 .RB [ \-o
21 .IR options ]
22 .RI [ device_name ]
4cb4934b 23 .br
0a81c260
ER
24@@ -283,10 +286,14 @@ Otherwise a table is read from standard
25 The optional uuid can be used in place of
26 device_name in subsequent dmsetup commands.
27 If successful a device will appear as
28 /dev/mapper/<device-name>.
29 See below for information on the table format.
30+.IP \fBexport
31+.I [ device_name ]
4cb4934b
JK
32+.br
33+Outputs information in key/value format to be imported by other programs.
0a81c260
ER
34 .br
35 .TP
4cb4934b
JK
36 .B deps
37 .RB [ \-o
38 .IR options ]
0a81c260
ER
39Index: LVM2.2.02.98/tools/dmsetup.c
40===================================================================
41--- LVM2.2.02.98.orig/tools/dmsetup.c
42+++ LVM2.2.02.98/tools/dmsetup.c
43@@ -1706,10 +1706,97 @@ static int _status(CMD_ARGS)
44 out:
45 dm_task_destroy(dmt);
78cc64d1
ER
46 return r;
47 }
48
0a81c260 49+static int _export(CMD_ARGS)
78cc64d1
ER
50+{
51+ int r = 0;
52+ struct dm_task *dmt = NULL;
53+ void *next = NULL;
54+ uint64_t start, length;
55+ char *target_type = NULL;
56+ char *params;
78cc64d1
ER
57+ const char *name = NULL;
58+ const char *uuid = NULL;
59+ struct dm_info info;
60+
0a81c260 61+ if (names)
78cc64d1
ER
62+ name = names->name;
63+ else if (argc == 2)
64+ name = argv[1];
65+
66+ if (!(dmt = dm_task_create(DM_DEVICE_STATUS)))
67+ goto out;
68+
69+ if (!_set_task_device(dmt, name, 0))
70+ goto out;
71+
72+ if (!dm_task_run(dmt))
73+ goto out;
74+
75+ if (!dm_task_get_info(dmt, &info) || !info.exists)
76+ goto out;
77+
78+ if (!name)
79+ name = dm_task_get_name(dmt);
80+
81+ uuid = dm_task_get_uuid(dmt);
82+ printf("DM_NAME=%s\n", name);
83+
84+ if ((uuid = dm_task_get_uuid(dmt)) && *uuid)
85+ printf("DM_UUID=%s\n", uuid);
86+
87+ if (!info.exists) {
88+ printf("DM_STATE=NOTPRESENT\n");
89+ goto out;
90+ }
91+
92+ printf("DM_STATE=%s\n",
93+ info.suspended ? "SUSPENDED" :
0a81c260 94+ (info.read_only ? "READONLY" : "ACTIVE"));
78cc64d1
ER
95+
96+ if (!info.live_table && !info.inactive_table)
97+ printf("DM_TABLE_STATE=NONE\n");
98+ else
99+ printf("DM_TABLE_STATE=%s%s%s\n",
100+ info.live_table ? "LIVE" : "",
101+ info.live_table && info.inactive_table ? "/" : "",
102+ info.inactive_table ? "INACTIVE" : "");
103+
104+ if (info.open_count != -1)
105+ printf("DM_OPENCOUNT=%d\n", info.open_count);
106+
107+ printf("DM_LAST_EVENT_NR=%" PRIu32 "\n", info.event_nr);
108+
109+ printf("DM_MAJOR=%d\n", info.major);
110+ printf("DM_MINOR=%d\n", info.minor);
111+
112+ if (info.target_count != -1)
113+ printf("DM_TARGET_COUNT=%d\n", info.target_count);
114+
115+ /* export all table types */
116+ next = dm_get_next_target(dmt, next, &start, &length,
117+ &target_type, &params);
118+ if (target_type) {
119+ printf("DM_TARGET_TYPES=%s", target_type);
120+ while (next) {
121+ next = dm_get_next_target(dmt, next, &start, &length,
122+ &target_type, &params);
123+ if (target_type)
124+ printf(",%s", target_type);
125+ }
126+ printf("\n");
127+ }
128+
129+ r = 1;
130+ out:
131+ if (dmt)
132+ dm_task_destroy(dmt);
133+ return r;
134+}
135+
136 /* Show target names and their version numbers */
4cb4934b 137 static int _targets(CMD_ARGS)
78cc64d1 138 {
0a81c260
ER
139 int r = 0;
140 struct dm_task *dmt;
141@@ -3056,10 +3143,11 @@ static struct command _commands[] = {
142 {"message", "<device> <sector> <message>", 2, -1, 0, _message},
143 {"ls", "[--target <target_type>] [--exec <command>] [-o options] [--tree]", 0, 0, 0, _ls},
6e7a47a9 144 {"info", "[<device>]", 0, -1, 1, _info},
4cb4934b
JK
145 {"deps", "[-o options] [<device>]", 0, -1, 1, _deps},
146 {"status", "[<device>] [--noflush] [--target <target_type>]", 0, -1, 1, _status},
0a81c260 147+ {"export", "[<device>]", 0, 1, 1, _export},
6e7a47a9 148 {"table", "[<device>] [--target <target_type>] [--showkeys]", 0, -1, 1, _status},
4cb4934b 149 {"wait", "<device> [<event_nr>] [--noflush]", 0, 2, 0, _wait},
6e7a47a9 150 {"mknodes", "[<device>]", 0, -1, 1, _mknodes},
0a81c260
ER
151 {"mangle", "[<device>]", 0, -1, 1, _mangle},
152 {"udevcreatecookie", "", 0, 0, 0, _udevcreatecookie},
This page took 0.045758 seconds and 4 git commands to generate.