[lvm-devel] [PATCH]: unify logical volume structure initialization
Mikulas Patocka
mpatocka at redhat.com
Thu Sep 24 12:59:45 UTC 2009
Hi
I'm submitting this patch to lvm because both snapshot and replicators
groups need it.
Mikulas
---
Copying code is terrible practice. The code is hard to change for anyone.
Because I need to change this code and don't want to copy the change to any
place, I moved it to a separate function.
Signed-off-by: Mikulas Patocka <mpatocka at redhat.com>
Signed-off-by: Mike Snitzer <snitzer at redhat.com>
[snitm: import_snapshots() change should be in different patch?]
---
lib/format1/import-export.c | 8 ++------
lib/format_pool/import_export.c | 11 ++---------
lib/format_text/import_vsn1.c | 6 +-----
lib/metadata/lv_manip.c | 18 +++++++++++++-----
lib/metadata/metadata-exported.h | 1 +
5 files changed, 19 insertions(+), 25 deletions(-)
Index: LVM2-msnitzer/lib/format1/import-export.c
===================================================================
--- LVM2-msnitzer.orig/lib/format1/import-export.c 2009-09-24 14:56:55.000000000 +0200
+++ LVM2-msnitzer/lib/format1/import-export.c 2009-09-24 14:57:03.000000000 +0200
@@ -337,11 +337,7 @@ int import_lv(struct cmd_context *cmd, s
lv->size = lvd->lv_size;
lv->le_count = lvd->lv_allocated_le;
- lv->snapshot = NULL;
- dm_list_init(&lv->snapshot_segs);
- dm_list_init(&lv->segments);
- dm_list_init(&lv->tags);
- dm_list_init(&lv->segs_using_this_lv);
+ lv_init(lv);
return 1;
}
@@ -618,7 +614,7 @@ int import_snapshots(struct dm_pool *mem
/* insert the snapshot */
if (!vg_add_snapshot(org, cow, NULL,
org->le_count,
- lvd->lv_chunk_size)) {
+ lvd->lv_chunk_size, 0)) {
log_error("Couldn't add snapshot.");
return 0;
}
Index: LVM2-msnitzer/lib/format_pool/import_export.c
===================================================================
--- LVM2-msnitzer.orig/lib/format_pool/import_export.c 2009-09-24 14:56:55.000000000 +0200
+++ LVM2-msnitzer/lib/format_pool/import_export.c 2009-09-24 14:57:03.000000000 +0200
@@ -70,11 +70,7 @@ int import_pool_lvs(struct volume_group
lv->name = NULL;
lv->le_count = 0;
lv->read_ahead = vg->cmd->default_settings.read_ahead;
- lv->snapshot = NULL;
- dm_list_init(&lv->snapshot_segs);
- dm_list_init(&lv->segments);
- dm_list_init(&lv->tags);
- dm_list_init(&lv->segs_using_this_lv);
+ lv_init(lv);
dm_list_iterate_items(pl, pls) {
lv->size += pl->pd.pl_blocks;
@@ -99,10 +95,7 @@ int import_pool_lvs(struct volume_group
} else {
lv->minor = -1;
}
- lv->snapshot = NULL;
- dm_list_init(&lv->snapshot_segs);
- dm_list_init(&lv->segments);
- dm_list_init(&lv->tags);
+ lv_init(lv);
}
lv->le_count = lv->size / POOL_PE_SIZE;
Index: LVM2-msnitzer/lib/format_text/import_vsn1.c
===================================================================
--- LVM2-msnitzer.orig/lib/format_text/import_vsn1.c 2009-09-24 14:56:55.000000000 +0200
+++ LVM2-msnitzer/lib/format_text/import_vsn1.c 2009-09-24 14:57:03.000000000 +0200
@@ -541,11 +541,7 @@ static int _read_lvnames(struct format_i
}
}
- lv->snapshot = NULL;
- dm_list_init(&lv->snapshot_segs);
- dm_list_init(&lv->segments);
- dm_list_init(&lv->tags);
- dm_list_init(&lv->segs_using_this_lv);
+ lv_init(lv);
/* Optional tags */
if ((cn = find_config_node(lvn, "tags")) &&
Index: LVM2-msnitzer/lib/metadata/lv_manip.c
===================================================================
--- LVM2-msnitzer.orig/lib/metadata/lv_manip.c 2009-09-24 14:56:55.000000000 +0200
+++ LVM2-msnitzer/lib/metadata/lv_manip.c 2009-09-24 14:57:03.000000000 +0200
@@ -1863,6 +1863,18 @@ int vg_max_lv_reached(struct volume_grou
}
/*
+ * Initialize common fields in a structure.
+ */
+void lv_init(struct logical_volume *lv)
+{
+ lv->snapshot = NULL;
+ dm_list_init(&lv->snapshot_segs);
+ dm_list_init(&lv->segments);
+ dm_list_init(&lv->tags);
+ dm_list_init(&lv->segs_using_this_lv);
+}
+
+/*
* Create a new empty LV.
*/
struct logical_volume *lv_create_empty(const char *name,
@@ -1904,11 +1916,7 @@ struct logical_volume *lv_create_empty(c
lv->minor = -1;
lv->size = UINT64_C(0);
lv->le_count = 0;
- lv->snapshot = NULL;
- dm_list_init(&lv->snapshot_segs);
- dm_list_init(&lv->segments);
- dm_list_init(&lv->tags);
- dm_list_init(&lv->segs_using_this_lv);
+ lv_init(lv);
if (lvid)
lv->lvid = *lvid;
Index: LVM2-msnitzer/lib/metadata/metadata-exported.h
===================================================================
--- LVM2-msnitzer.orig/lib/metadata/metadata-exported.h 2009-09-24 14:56:55.000000000 +0200
+++ LVM2-msnitzer/lib/metadata/metadata-exported.h 2009-09-24 14:57:03.000000000 +0200
@@ -466,6 +466,7 @@ int remove_lvs_in_vg(struct cmd_context
void vg_release(struct volume_group *vg);
/* Manipulate LVs */
+void lv_init(struct logical_volume *lv);
struct logical_volume *lv_create_empty(const char *name,
union lvid *lvid,
uint32_t status,
More information about the lvm-devel
mailing list