* PATCH - multipath UUID
@ 2005-09-29 16:03 Patrick Caulfield
2005-09-29 22:16 ` Christophe Varoqui
0 siblings, 1 reply; 2+ messages in thread
From: Patrick Caulfield @ 2005-09-29 16:03 UTC (permalink / raw)
To: dm-devel
[-- Attachment #1: Type: text/plain, Size: 219 bytes --]
If you use aliases to rename the multipath devices to something sensible you
lose the WWIDs, this patch stores them as the device-mapper UUID and retrieves
them so they can be displayed using multipath -l.
--
patrick
[-- Attachment #2: multipath-uuid.patch --]
[-- Type: text/x-patch, Size: 2366 bytes --]
diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
--- a/libmultipath/devmapper.c
+++ b/libmultipath/devmapper.c
@@ -102,7 +102,7 @@ dm_simplecmd (int task, const char *name
extern int
dm_addmap (int task, const char *name, const char *target,
- const char *params, unsigned long long size) {
+ const char *params, unsigned long long size, const char *uuid) {
int r = 0;
struct dm_task *dmt;
@@ -115,6 +115,9 @@ dm_addmap (int task, const char *name, c
if (!dm_task_add_target (dmt, 0, size, target, params))
goto addout;
+ if (uuid && !dm_task_set_uuid(dmt, uuid))
+ goto addout;
+
dm_task_no_open_count(dmt);
r = dm_task_run (dmt);
@@ -188,6 +191,34 @@ out:
}
extern int
+dm_get_uuid(char *name, char *uuid)
+{
+ struct dm_task *dmt;
+ const char *uuidtmp;
+
+ dmt = dm_task_create(DM_DEVICE_INFO);
+ if (!dmt)
+ return 1;
+
+ if (!dm_task_set_name (dmt, name))
+ goto uuidout;
+
+ if (!dm_task_run(dmt))
+ goto uuidout;
+
+ uuidtmp = dm_task_get_uuid(dmt);
+ if (uuidtmp)
+ strcpy(uuid, uuidtmp);
+ else
+ uuid[0] = '\0';
+
+uuidout:
+ dm_task_destroy(dmt);
+
+ return 0;
+}
+
+extern int
dm_get_status(char * name, char * outstatus)
{
int r = 1;
@@ -556,6 +587,8 @@ dm_get_maps (vector mp, char * type)
if (dm_get_status(names->name, mpp->status))
goto out1;
+ dm_get_uuid(names->name, mpp->wwid);
+
mpp->alias = MALLOC(strlen(names->name) + 1);
if (!mpp->alias)
diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h
--- a/libmultipath/devmapper.h
+++ b/libmultipath/devmapper.h
@@ -1,7 +1,7 @@
int dm_prereq (char *, int, int, int);
int dm_simplecmd (int, const char *);
int dm_addmap (int, const char *, const char *, const char *,
- unsigned long long);
+ unsigned long long, const char *uuid);
int dm_map_present (char *);
int dm_get_map(char *, unsigned long long *, char *);
int dm_get_status(char *, char *);
diff --git a/multipath/main.c b/multipath/main.c
--- a/multipath/main.c
+++ b/multipath/main.c
@@ -625,7 +625,7 @@ domap (struct multipath * mpp)
*/
dm_log_init_verbose(0);
- r = dm_addmap(op, mpp->alias, DEFAULT_TARGET, mpp->params, mpp->size);
+ r = dm_addmap(op, mpp->alias, DEFAULT_TARGET, mpp->params, mpp->size, mpp->wwid);
if (r == 0)
dm_simplecmd(DM_DEVICE_REMOVE, mpp->alias);
[-- Attachment #3: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: PATCH - multipath UUID
2005-09-29 16:03 PATCH - multipath UUID Patrick Caulfield
@ 2005-09-29 22:16 ` Christophe Varoqui
0 siblings, 0 replies; 2+ messages in thread
From: Christophe Varoqui @ 2005-09-29 22:16 UTC (permalink / raw)
To: device-mapper development
On jeu, 2005-09-29 at 17:03 +0100, Patrick Caulfield wrote:
> If you use aliases to rename the multipath devices to something sensible you
> lose the WWIDs, this patch stores them as the device-mapper UUID and retrieves
> them so they can be displayed using multipath -l.
> --
How imaginative !
Applied, with thanks,
cvaroqui
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2005-09-29 22:16 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-09-29 16:03 PATCH - multipath UUID Patrick Caulfield
2005-09-29 22:16 ` Christophe Varoqui
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.