[lvm-devel] dev-mornfall-lvmcache - lvmcache: Drop the label->info link.

Petr Rockai mornfall at fedoraproject.org
Wed Jun 5 12:06:01 UTC 2013


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=8e5d18afd3f182bcfc3025ef2aeecaa9b542cc19
Commit:        8e5d18afd3f182bcfc3025ef2aeecaa9b542cc19
Parent:        ec5f5564de0d0e84c1e2359cad06af2477fa4031
Author:        Petr Rockai <prockai at redhat.com>
AuthorDate:    Mon Feb 18 22:15:00 2013 +0100
Committer:     Petr Rockai <prockai at redhat.com>
CommitterDate: Wed Jun 5 12:37:36 2013 +0200

lvmcache: Drop the label->info link.

---
 lib/cache/lvmcache.c          |    7 ++-----
 lib/cache/lvmetad.c           |    2 +-
 lib/format_text/format-text.c |    2 +-
 lib/format_text/text_label.c  |   12 +++++++-----
 lib/label/label.h             |    1 -
 lib/metadata/metadata.c       |    4 ++--
 6 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c
index 1c4da0f..f76e479 100644
--- a/lib/cache/lvmcache.c
+++ b/lib/cache/lvmcache.c
@@ -808,11 +808,10 @@ static struct device *_device_from_pvid(const struct id *pvid,
 		}
 
 		if (label_read(info->label->dev, &label, UINT64_C(0))) {
-			info = (struct lvmcache_info *) label->info;
-			if (id_equal(pvid, (struct id *) &info->label->dev->pvid)) {
+			if (id_equal(pvid, (struct id *) &label->dev->pvid)) {
 				if (label_sector)
 					*label_sector = label->sector;
-				return info->label->dev;
+				return label->dev;
                         }
 		}
 	}
@@ -1357,7 +1356,6 @@ struct lvmcache_info *lvmcache_add(struct labeller *labeller, const char *pvid,
 			return NULL;
 		}
 
-		label->info = info;
 		info->label = label;
 		dm_list_init(&info->list);
 		info->label->dev = dev;
@@ -1418,7 +1416,6 @@ struct lvmcache_info *lvmcache_add(struct labeller *labeller, const char *pvid,
 			if (!(info->label = label_create(labeller)))
 				/* FIXME leaves info without label! */
 				return_NULL;
-			info->label->info = info;
 			info->label->dev = dev;
 			lvmcache_del_mdas(info);
 			lvmcache_del_das(info);
diff --git a/lib/cache/lvmetad.c b/lib/cache/lvmetad.c
index 7aa8641..069c0ae 100644
--- a/lib/cache/lvmetad.c
+++ b/lib/cache/lvmetad.c
@@ -897,7 +897,7 @@ int lvmetad_pvscan_single(struct cmd_context *cmd, struct device *dev,
 		return 1;
 	}
 
-	info = (struct lvmcache_info *) label->info;
+	info = lvmcache_info_from_pvid(dev->pvid, 0);
 
 	baton.vg = NULL;
 	baton.fid = lvmcache_fmt(info)->ops->create_instance(lvmcache_fmt(info),
diff --git a/lib/format_text/format-text.c b/lib/format_text/format-text.c
index 1a16134..c8db5d0 100644
--- a/lib/format_text/format-text.c
+++ b/lib/format_text/format-text.c
@@ -1455,7 +1455,7 @@ static int _text_pv_read(const struct format_type *fmt, const char *pv_name,
 		struct label *label;
 		if (!(label_read(dev, &label, UINT64_C(0))))
 			return_0;
-		info = label->info;
+		info = lvmcache_info_from_pvid(dev->pvid, 0);
 	}
 
 	if (!info)
diff --git a/lib/format_text/text_label.c b/lib/format_text/text_label.c
index 3408590..09a3302 100644
--- a/lib/format_text/text_label.c
+++ b/lib/format_text/text_label.c
@@ -99,7 +99,7 @@ static int _text_write(struct label *label, void *buf)
 	strncpy((char *)lh->type, label->type, sizeof(label->type));
 
 	pvhdr = (struct pv_header *) ((char *) buf + xlate32(lh->offset_xl));
-	info = (struct lvmcache_info *) label->info;
+	info = lvmcache_info_from_pvid(label->dev->pvid, 0);
 	pvhdr->device_size_xl = xlate64(lvmcache_device_size(info));
 	memcpy(pvhdr->pv_uuid, &lvmcache_device(info)->pvid, sizeof(struct id));
 	if (!id_write_format((const struct id *)pvhdr->pv_uuid, buffer,
@@ -439,11 +439,13 @@ out:
 static void _text_destroy_label(struct labeller *l __attribute__((unused)),
 				struct label *label)
 {
-	struct lvmcache_info *info = (struct lvmcache_info *) label->info;
+	struct lvmcache_info *info = lvmcache_info_from_pvid(label->dev->pvid, 0);
 
-	lvmcache_del_mdas(info);
-	lvmcache_del_das(info);
-	lvmcache_del_bas(info);
+	if (info) {
+		lvmcache_del_mdas(info);
+		lvmcache_del_das(info);
+		lvmcache_del_bas(info);
+	}
 }
 
 static void _fmt_text_destroy(struct labeller *l)
diff --git a/lib/label/label.h b/lib/label/label.h
index 9a0e07e..c45928a 100644
--- a/lib/label/label.h
+++ b/lib/label/label.h
@@ -42,7 +42,6 @@ struct label {
 	char type[8];
 	uint64_t sector;
 	struct labeller *labeller;
-	void *info;
 	struct device *dev;
 	struct dm_list mdas;	/* list head for metadata areas */
 	struct dm_list das;	/* list head for data areas */
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 2fe795c..31c9eba 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -3616,7 +3616,7 @@ static struct physical_volume *_pv_read(struct cmd_context *cmd,
 					  pv_name);
 			return NULL;
 		}
-		info = (struct lvmcache_info *) label->info;
+		info = lvmcache_info_from_pvid(label->dev->pvid, 0);
 	}
 
 	fmt = lvmcache_fmt(info);
@@ -3872,7 +3872,7 @@ int pv_analyze(struct cmd_context *cmd, const char *pv_name,
 	/*
 	 * Next, loop through metadata areas
 	 */
-	info = label->info;
+	info = lvmcache_info_from_pvid(label->dev->pvid, 0);
 	lvmcache_foreach_mda(info, _analyze_mda, (void *)lvmcache_fmt(info));
 
 	return 1;




More information about the lvm-devel mailing list