[lvm-devel] LVM2/lib/cache lvmcache.c lvmcache.h

wysochanski at sourceware.org wysochanski at sourceware.org
Wed May 19 11:52:21 UTC 2010


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	wysochanski at sourceware.org	2010-05-19 11:52:21

Modified files:
	lib/cache      : lvmcache.c lvmcache.h 

Log message:
	Add lvmcache_vgname_from_pvid().
	
	Add lvmcache function to lookup a vgname from a pvid.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/cache/lvmcache.c.diff?cvsroot=lvm2&r1=1.90&r2=1.91
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/cache/lvmcache.h.diff?cvsroot=lvm2&r1=1.32&r2=1.33

--- LVM2/lib/cache/lvmcache.c	2010/05/19 11:52:07	1.90
+++ LVM2/lib/cache/lvmcache.c	2010/05/19 11:52:21	1.91
@@ -509,6 +509,27 @@
 	return info;
 }
 
+char *lvmcache_vgname_from_pvid(struct cmd_context *cmd, const char *pvid)
+{
+	struct lvmcache_info *info;
+	char *vgname;
+
+	if (!device_from_pvid(cmd, (struct id *)pvid, NULL)) {
+		log_error("Couldn't find device with uuid %s.", pvid);
+		return NULL;
+	}
+
+	info = info_from_pvid(pvid, 0);
+	if (!info)
+		return_NULL;
+
+	if (!(vgname = dm_pool_strdup(cmd->mem, info->vginfo->vgname))) {
+		log_errno(ENOMEM, "vgname allocation failed");
+		return NULL;
+	}
+	return vgname;
+}
+
 static void _rescan_entry(struct lvmcache_info *info)
 {
 	struct label *label;
--- LVM2/lib/cache/lvmcache.h	2010/05/19 11:52:07	1.32
+++ LVM2/lib/cache/lvmcache.h	2010/05/19 11:52:21	1.33
@@ -98,6 +98,7 @@
 				unsigned *scan_done_once);
 const char *pvid_from_devname(struct cmd_context *cmd,
 			      const char *dev_name);
+char *lvmcache_vgname_from_pvid(struct cmd_context *cmd, const char *pvid);
 int vgs_locked(void);
 int vgname_is_locked(const char *vgname);
 




More information about the lvm-devel mailing list