mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
Use format instance mempool where possible and adequate.
This commit is contained in:
parent
e8d4946ec7
commit
ff4479414c
@ -1,5 +1,6 @@
|
|||||||
Version 2.02.85 -
|
Version 2.02.85 -
|
||||||
===================================
|
===================================
|
||||||
|
Use format instance mempool where possible and adequate.
|
||||||
Call destroy_instance for any PVs found in VG structure during vg_free call.
|
Call destroy_instance for any PVs found in VG structure during vg_free call.
|
||||||
Add new free_pv_fid fn and use it throughout to free all attached fids.
|
Add new free_pv_fid fn and use it throughout to free all attached fids.
|
||||||
Use only vg_set_fid and new pv_set_fid fn to assign the format instance.
|
Use only vg_set_fid and new pv_set_fid fn to assign the format instance.
|
||||||
|
@ -508,10 +508,9 @@ static struct format_instance *_format1_create_instance(const struct format_type
|
|||||||
return_NULL;
|
return_NULL;
|
||||||
|
|
||||||
/* Define a NULL metadata area */
|
/* Define a NULL metadata area */
|
||||||
if (!(mda = dm_pool_zalloc(fmt->cmd->mem, sizeof(*mda)))) {
|
if (!(mda = dm_pool_zalloc(fid->mem, sizeof(*mda)))) {
|
||||||
log_error("Unable to allocate metadata area structure "
|
log_error("Unable to allocate metadata area structure "
|
||||||
"for lvm1 format");
|
"for lvm1 format");
|
||||||
dm_pool_free(fmt->cmd->mem, fid);
|
|
||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,10 +233,9 @@ static struct format_instance *_pool_create_instance(const struct format_type *f
|
|||||||
return_NULL;
|
return_NULL;
|
||||||
|
|
||||||
/* Define a NULL metadata area */
|
/* Define a NULL metadata area */
|
||||||
if (!(mda = dm_pool_zalloc(fmt->cmd->mem, sizeof(*mda)))) {
|
if (!(mda = dm_pool_zalloc(fid->mem, sizeof(*mda)))) {
|
||||||
log_error("Unable to allocate metadata area structure "
|
log_error("Unable to allocate metadata area structure "
|
||||||
"for pool format");
|
"for pool format");
|
||||||
dm_pool_free(fmt->cmd->mem, fid);
|
|
||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1659,7 +1659,7 @@ static int _text_pv_setup(const struct format_type *fmt,
|
|||||||
|
|
||||||
/* Be sure it's not already in VG's format instance! */
|
/* Be sure it's not already in VG's format instance! */
|
||||||
if (!fid_get_mda_indexed(vg->fid, pvid, ID_LEN, mda_index)) {
|
if (!fid_get_mda_indexed(vg->fid, pvid, ID_LEN, mda_index)) {
|
||||||
pv_mda_copy = mda_copy(vg->fid->fmt->cmd->mem, pv_mda);
|
pv_mda_copy = mda_copy(vg->fid->mem, pv_mda);
|
||||||
fid_add_mda(vg->fid, pv_mda_copy, pvid, ID_LEN, mda_index);
|
fid_add_mda(vg->fid, pv_mda_copy, pvid, ID_LEN, mda_index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1727,14 +1727,14 @@ static int _create_pv_text_instance(struct format_instance *fid,
|
|||||||
struct lvmcache_info *info;
|
struct lvmcache_info *info;
|
||||||
|
|
||||||
if (!(fid_pv_tc = (struct text_fid_pv_context *)
|
if (!(fid_pv_tc = (struct text_fid_pv_context *)
|
||||||
dm_pool_zalloc(fid->fmt->cmd->mem, sizeof(*fid_pv_tc)))) {
|
dm_pool_zalloc(fid->mem, sizeof(*fid_pv_tc)))) {
|
||||||
log_error("Couldn't allocate text_fid_pv_context.");
|
log_error("Couldn't allocate text_fid_pv_context.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
fid_pv_tc->label_sector = -1;
|
fid_pv_tc->label_sector = -1;
|
||||||
fid->private = (void *) fid_pv_tc;
|
fid->private = (void *) fid_pv_tc;
|
||||||
|
|
||||||
if (!(fid->metadata_areas_index.array = dm_pool_zalloc(fid->fmt->cmd->mem,
|
if (!(fid->metadata_areas_index.array = dm_pool_zalloc(fid->mem,
|
||||||
FMT_TEXT_MAX_MDAS_PER_PV *
|
FMT_TEXT_MAX_MDAS_PER_PV *
|
||||||
sizeof(struct metadata_area *)))) {
|
sizeof(struct metadata_area *)))) {
|
||||||
log_error("Couldn't allocate format instance metadata index.");
|
log_error("Couldn't allocate format instance metadata index.");
|
||||||
@ -1811,7 +1811,7 @@ static int _create_vg_text_instance(struct format_instance *fid,
|
|||||||
const char *vg_name, *vg_id;
|
const char *vg_name, *vg_id;
|
||||||
|
|
||||||
if (!(fidtc = (struct text_fid_context *)
|
if (!(fidtc = (struct text_fid_context *)
|
||||||
dm_pool_zalloc(fid->fmt->cmd->mem,sizeof(*fidtc)))) {
|
dm_pool_zalloc(fid->mem, sizeof(*fidtc)))) {
|
||||||
log_error("Couldn't allocate text_fid_context.");
|
log_error("Couldn't allocate text_fid_context.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1820,10 +1820,10 @@ static int _create_vg_text_instance(struct format_instance *fid,
|
|||||||
fid->private = (void *) fidtc;
|
fid->private = (void *) fidtc;
|
||||||
|
|
||||||
if (type & FMT_INSTANCE_PRIVATE_MDAS) {
|
if (type & FMT_INSTANCE_PRIVATE_MDAS) {
|
||||||
if (!(mda = dm_pool_zalloc(fid->fmt->cmd->mem, sizeof(*mda))))
|
if (!(mda = dm_pool_zalloc(fid->mem, sizeof(*mda))))
|
||||||
return_0;
|
return_0;
|
||||||
mda->ops = &_metadata_text_file_backup_ops;
|
mda->ops = &_metadata_text_file_backup_ops;
|
||||||
mda->metadata_locn = _create_text_context(fid->fmt->cmd->mem, fic->context.private);
|
mda->metadata_locn = _create_text_context(fid->mem, fic->context.private);
|
||||||
mda->status = 0;
|
mda->status = 0;
|
||||||
fid->metadata_areas_index.hash = NULL;
|
fid->metadata_areas_index.hash = NULL;
|
||||||
fid_add_mda(fid, mda, NULL, 0, 0);
|
fid_add_mda(fid, mda, NULL, 0, 0);
|
||||||
@ -1845,12 +1845,12 @@ static int _create_vg_text_instance(struct format_instance *fid,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(mda = dm_pool_zalloc(fid->fmt->cmd->mem, sizeof(*mda))))
|
if (!(mda = dm_pool_zalloc(fid->mem, sizeof(*mda))))
|
||||||
return_0;
|
return_0;
|
||||||
mda->ops = &_metadata_text_file_ops;
|
mda->ops = &_metadata_text_file_ops;
|
||||||
tc.path_live = path;
|
tc.path_live = path;
|
||||||
tc.path_edit = tc.desc = NULL;
|
tc.path_edit = tc.desc = NULL;
|
||||||
mda->metadata_locn = _create_text_context(fid->fmt->cmd->mem, &tc);
|
mda->metadata_locn = _create_text_context(fid->mem, &tc);
|
||||||
mda->status = 0;
|
mda->status = 0;
|
||||||
fid_add_mda(fid, mda, NULL, 0, 0);
|
fid_add_mda(fid, mda, NULL, 0, 0);
|
||||||
}
|
}
|
||||||
@ -1861,10 +1861,10 @@ static int _create_vg_text_instance(struct format_instance *fid,
|
|||||||
if (!_raw_holds_vgname(fid, &rl->dev_area, vg_name))
|
if (!_raw_holds_vgname(fid, &rl->dev_area, vg_name))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!(mda = dm_pool_zalloc(fid->fmt->cmd->mem, sizeof(*mda))))
|
if (!(mda = dm_pool_zalloc(fid->mem, sizeof(*mda))))
|
||||||
return_0;
|
return_0;
|
||||||
|
|
||||||
if (!(mdac = dm_pool_zalloc(fid->fmt->cmd->mem, sizeof(*mdac))))
|
if (!(mdac = dm_pool_zalloc(fid->mem, sizeof(*mdac))))
|
||||||
return_0;
|
return_0;
|
||||||
mda->metadata_locn = mdac;
|
mda->metadata_locn = mdac;
|
||||||
/* FIXME Allow multiple dev_areas inside area */
|
/* FIXME Allow multiple dev_areas inside area */
|
||||||
@ -1912,12 +1912,12 @@ static int _add_metadata_area_to_pv(struct physical_volume *pv,
|
|||||||
pv->fmt->name);
|
pv->fmt->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(mda = dm_malloc(sizeof(struct metadata_area)))) {
|
if (!(mda = dm_pool_zalloc(pv->fid->mem, sizeof(struct metadata_area)))) {
|
||||||
log_error("struct metadata_area allocation failed");
|
log_error("struct metadata_area allocation failed");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(mdac = dm_malloc(sizeof(struct mda_context)))) {
|
if (!(mdac = dm_pool_zalloc(pv->fid->mem, sizeof(struct mda_context)))) {
|
||||||
log_error("struct mda_context allocation failed");
|
log_error("struct mda_context allocation failed");
|
||||||
dm_free(mda);
|
dm_free(mda);
|
||||||
return 0;
|
return 0;
|
||||||
@ -2244,7 +2244,6 @@ static struct format_instance *_text_create_text_instance(const struct format_ty
|
|||||||
_create_pv_text_instance(fid, fic))
|
_create_pv_text_instance(fid, fic))
|
||||||
return fid;
|
return fid;
|
||||||
|
|
||||||
dm_pool_free(fmt->cmd->mem, fid);
|
|
||||||
dm_pool_destroy(fid->mem);
|
dm_pool_destroy(fid->mem);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -4025,7 +4025,7 @@ struct format_instance *alloc_fid(const struct format_type *fmt,
|
|||||||
if (!(mem = dm_pool_create("format_instance", 1024)))
|
if (!(mem = dm_pool_create("format_instance", 1024)))
|
||||||
return_NULL;
|
return_NULL;
|
||||||
|
|
||||||
if (!(fid = dm_pool_zalloc(fmt->cmd->mem, sizeof(*fid)))) {
|
if (!(fid = dm_pool_zalloc(mem, sizeof(*fid)))) {
|
||||||
log_error("Couldn't allocate format_instance object.");
|
log_error("Couldn't allocate format_instance object.");
|
||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
@ -4117,7 +4117,7 @@ int fid_add_mdas(struct format_instance *fid, struct dm_list *mdas,
|
|||||||
unsigned mda_index = 0;
|
unsigned mda_index = 0;
|
||||||
|
|
||||||
dm_list_iterate_items(mda, mdas) {
|
dm_list_iterate_items(mda, mdas) {
|
||||||
mda_new = mda_copy(fid->fmt->cmd->mem, mda);
|
mda_new = mda_copy(fid->mem, mda);
|
||||||
if (!mda_new)
|
if (!mda_new)
|
||||||
return_0;
|
return_0;
|
||||||
fid_remove_mda(fid, NULL, key, key_len, mda_index);
|
fid_remove_mda(fid, NULL, key, key_len, mda_index);
|
||||||
|
Loading…
Reference in New Issue
Block a user