From: Peter Rajnoha Date: Fri, 11 Mar 2011 14:30:27 +0000 (+0000) Subject: Use new alloc_fid fn for common format instance initialisation. X-Git-Tag: old-v2_02_85~95 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=2b62190d4bc9d54735db04957df1de47ee896208;p=lvm2.git Use new alloc_fid fn for common format instance initialisation. --- diff --git a/WHATS_NEW b/WHATS_NEW index 42d74914b..d8faa3916 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.85 - =================================== + Use new alloc_fid fn for common format instance initialisation. Optimise _get_token() and _eat_space(). Add _lv_postorder_vg() to improve efficiency for all LVs in VG. Use hash tables to speedup string search in validate_vg(). diff --git a/lib/format1/format1.c b/lib/format1/format1.c index d639bb2cd..97d34a921 100644 --- a/lib/format1/format1.c +++ b/lib/format1/format1.c @@ -504,15 +504,9 @@ static struct format_instance *_format1_create_instance(const struct format_type struct format_instance *fid; struct metadata_area *mda; - if (!(fid = dm_pool_alloc(fmt->cmd->mem, sizeof(*fid)))) + if (!(fid = alloc_fid(fmt, fic))) return_NULL; - fid->fmt = fmt; - fid->type = fic->type; - - dm_list_init(&fid->metadata_areas_in_use); - dm_list_init(&fid->metadata_areas_ignored); - /* Define a NULL metadata area */ if (!(mda = dm_pool_zalloc(fmt->cmd->mem, sizeof(*mda)))) { dm_pool_free(fmt->cmd->mem, fid); diff --git a/lib/format_pool/format_pool.c b/lib/format_pool/format_pool.c index a14bf8c7a..ac9a91925 100644 --- a/lib/format_pool/format_pool.c +++ b/lib/format_pool/format_pool.c @@ -228,17 +228,8 @@ static struct format_instance *_pool_create_instance(const struct format_type *f struct format_instance *fid; struct metadata_area *mda; - if (!(fid = dm_pool_zalloc(fmt->cmd->mem, sizeof(*fid)))) { - log_error("Unable to allocate format instance structure for " - "pool format"); - return NULL; - } - - fid->fmt = fmt; - fid->type = fic->type; - - dm_list_init(&fid->metadata_areas_in_use); - dm_list_init(&fid->metadata_areas_ignored); + if (!(fid = alloc_fid(fmt, fic))) + return_NULL; /* Define a NULL metadata area */ if (!(mda = dm_pool_zalloc(fmt->cmd->mem, sizeof(*mda)))) { diff --git a/lib/format_text/format-text.c b/lib/format_text/format-text.c index c5db2784a..e5156f857 100644 --- a/lib/format_text/format-text.c +++ b/lib/format_text/format-text.c @@ -2190,21 +2190,13 @@ static int _text_pv_resize(const struct format_type *fmt, /* NULL vgname means use only the supplied context e.g. an archive file */ static struct format_instance *_text_create_text_instance(const struct format_type *fmt, - const struct format_instance_ctx *fic) + const struct format_instance_ctx *fic) { struct format_instance *fid; int r; - if (!(fid = dm_pool_alloc(fmt->cmd->mem, sizeof(*fid)))) { - log_error("Couldn't allocate format instance object."); - return NULL; - } - - fid->fmt = fmt; - fid->type = fic->type; - - dm_list_init(&fid->metadata_areas_in_use); - dm_list_init(&fid->metadata_areas_ignored); + if (!(fid = alloc_fid(fmt, fic))) + return_NULL; if (fid->type & FMT_INSTANCE_VG) r = _create_vg_text_instance(fid, fic); diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index 058c026e6..67401e767 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -3941,6 +3941,25 @@ uint32_t vg_lock_newname(struct cmd_context *cmd, const char *vgname) return FAILED_EXIST; } +struct format_instance *alloc_fid(const struct format_type *fmt, + const struct format_instance_ctx *fic) +{ + struct format_instance *fid; + + if (!(fid = dm_pool_zalloc(fmt->cmd->mem, sizeof(*fid)))) { + log_error("Couldn't allocate format_instance object."); + return NULL; + } + + fid->fmt = fmt; + fid->type = fic->type; + + dm_list_init(&fid->metadata_areas_in_use); + dm_list_init(&fid->metadata_areas_ignored); + + return fid; +} + void vg_set_fid(struct volume_group *vg, struct format_instance *fid) { diff --git a/lib/metadata/metadata.h b/lib/metadata/metadata.h index 1982711d0..8f0a6b189 100644 --- a/lib/metadata/metadata.h +++ b/lib/metadata/metadata.h @@ -191,6 +191,21 @@ struct metadata_area *mda_copy(struct dm_pool *mem, unsigned mda_is_ignored(struct metadata_area *mda); void mda_set_ignored(struct metadata_area *mda, unsigned ignored); unsigned mda_locns_match(struct metadata_area *mda1, struct metadata_area *mda2); + +struct format_instance_ctx { + uint32_t type; + union { + const char *pv_id; + struct { + const char *vg_name; + const char *vg_id; + } vg_ref; + void *private; + } context; +}; + +struct format_instance *alloc_fid(const struct format_type *fmt, + const struct format_instance_ctx *fic); void vg_set_fid(struct volume_group *vg, struct format_instance *fid); /* FIXME: Add generic interface for mda counts based on given key. */ int fid_add_mda(struct format_instance *fid, struct metadata_area *mda, @@ -229,18 +244,6 @@ struct seg_list { struct lv_segment *seg; }; -struct format_instance_ctx { - uint32_t type; - union { - const char *pv_id; - struct { - const char *vg_name; - const char *vg_id; - } vg_ref; - void *private; - } context; -}; - /* * Ownership of objects passes to caller. */