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 --- lib/format1/import-export.c | 6 +----- 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, 18 insertions(+), 24 deletions(-) Index: LVM2.2.02.53/lib/format1/import-export.c =================================================================== --- LVM2.2.02.53.orig/lib/format1/import-export.c 2009-09-15 20:35:14.000000000 +0200 +++ LVM2.2.02.53/lib/format1/import-export.c 2009-10-01 20:37:21.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; } Index: LVM2.2.02.53/lib/format_pool/import_export.c =================================================================== --- LVM2.2.02.53.orig/lib/format_pool/import_export.c 2009-05-13 23:25:02.000000000 +0200 +++ LVM2.2.02.53/lib/format_pool/import_export.c 2009-10-01 20:37:21.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.2.02.53/lib/format_text/import_vsn1.c =================================================================== --- LVM2.2.02.53.orig/lib/format_text/import_vsn1.c 2009-07-27 19:43:40.000000000 +0200 +++ LVM2.2.02.53/lib/format_text/import_vsn1.c 2009-10-01 20:37:21.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.2.02.53/lib/metadata/lv_manip.c =================================================================== --- LVM2.2.02.53.orig/lib/metadata/lv_manip.c 2009-10-01 20:37:20.000000000 +0200 +++ LVM2.2.02.53/lib/metadata/lv_manip.c 2009-10-01 20:37:21.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.2.02.53/lib/metadata/metadata-exported.h =================================================================== --- LVM2.2.02.53.orig/lib/metadata/metadata-exported.h 2009-09-15 20:35:14.000000000 +0200 +++ LVM2.2.02.53/lib/metadata/metadata-exported.h 2009-10-01 20:37:21.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,