mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-02 01:18:26 +03:00
Clean error paths for format instance
With updated orphan VG code this code needed some updates. Add missing log_error for allocation failures.
This commit is contained in:
parent
874a4fd80d
commit
f9411bb2af
@ -1,5 +1,6 @@
|
|||||||
Version 2.02.92 -
|
Version 2.02.92 -
|
||||||
====================================
|
====================================
|
||||||
|
Clean error paths for format instance creation (2.02.91).
|
||||||
Release vg in error path of _format1_vg_read() instead of just free().
|
Release vg in error path of _format1_vg_read() instead of just free().
|
||||||
Report allocation failure for allocation of PV structure.
|
Report allocation failure for allocation of PV structure.
|
||||||
Add clvmd init dependency on dlm service when running with new corosync.
|
Add clvmd init dependency on dlm service when running with new corosync.
|
||||||
|
@ -580,8 +580,10 @@ struct format_type *init_format(struct cmd_context *cmd)
|
|||||||
struct format_instance_ctx fic;
|
struct format_instance_ctx fic;
|
||||||
struct format_instance *fid;
|
struct format_instance *fid;
|
||||||
|
|
||||||
if (!fmt)
|
if (!fmt) {
|
||||||
return_NULL;
|
log_error("Failed to allocate format1 format type structure.");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
fmt->cmd = cmd;
|
fmt->cmd = cmd;
|
||||||
fmt->ops = &_format1_ops;
|
fmt->ops = &_format1_ops;
|
||||||
@ -607,15 +609,19 @@ struct format_type *init_format(struct cmd_context *cmd)
|
|||||||
|
|
||||||
if (!(fmt->orphan_vg = alloc_vg("text_orphan", cmd, fmt->orphan_vg_name))) {
|
if (!(fmt->orphan_vg = alloc_vg("text_orphan", cmd, fmt->orphan_vg_name))) {
|
||||||
log_error("Couldn't create lvm1 orphan VG.");
|
log_error("Couldn't create lvm1 orphan VG.");
|
||||||
|
dm_free(fmt);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
fic.type = FMT_INSTANCE_AUX_MDAS;
|
fic.type = FMT_INSTANCE_AUX_MDAS;
|
||||||
fic.context.vg_ref.vg_name = fmt->orphan_vg_name;
|
fic.context.vg_ref.vg_name = fmt->orphan_vg_name;
|
||||||
fic.context.vg_ref.vg_id = NULL;
|
fic.context.vg_ref.vg_id = NULL;
|
||||||
|
|
||||||
if (!(fid = _format1_create_instance(fmt, &fic))) {
|
if (!(fid = _format1_create_instance(fmt, &fic))) {
|
||||||
log_error("Couldn't create lvm1 orphan VG format instance.");
|
_format1_destroy(fmt);
|
||||||
return NULL;
|
return_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
vg_set_fid(fmt->orphan_vg, fid);
|
vg_set_fid(fmt->orphan_vg, fid);
|
||||||
|
|
||||||
log_very_verbose("Initialised format: %s", fmt->name);
|
log_very_verbose("Initialised format: %s", fmt->name);
|
||||||
|
@ -320,15 +320,19 @@ struct format_type *init_format(struct cmd_context *cmd)
|
|||||||
|
|
||||||
if (!(fmt->orphan_vg = alloc_vg("text_orphan", cmd, fmt->orphan_vg_name))) {
|
if (!(fmt->orphan_vg = alloc_vg("text_orphan", cmd, fmt->orphan_vg_name))) {
|
||||||
log_error("Couldn't create lvm1 orphan VG.");
|
log_error("Couldn't create lvm1 orphan VG.");
|
||||||
|
dm_free(fmt);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
fic.type = FMT_INSTANCE_AUX_MDAS;
|
fic.type = FMT_INSTANCE_AUX_MDAS;
|
||||||
fic.context.vg_ref.vg_name = fmt->orphan_vg_name;
|
fic.context.vg_ref.vg_name = fmt->orphan_vg_name;
|
||||||
fic.context.vg_ref.vg_id = NULL;
|
fic.context.vg_ref.vg_id = NULL;
|
||||||
|
|
||||||
if (!(fid = _pool_create_instance(fmt, &fic))) {
|
if (!(fid = _pool_create_instance(fmt, &fic))) {
|
||||||
log_error("Couldn't create lvm1 orphan VG format instance.");
|
_pool_destroy(fmt);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
vg_set_fid(fmt->orphan_vg, fid);
|
vg_set_fid(fmt->orphan_vg, fid);
|
||||||
|
|
||||||
log_very_verbose("Initialised format: %s", fmt->name);
|
log_very_verbose("Initialised format: %s", fmt->name);
|
||||||
|
@ -2270,8 +2270,10 @@ struct format_type *create_text_format(struct cmd_context *cmd)
|
|||||||
const struct dm_config_value *cv;
|
const struct dm_config_value *cv;
|
||||||
struct mda_lists *mda_lists;
|
struct mda_lists *mda_lists;
|
||||||
|
|
||||||
if (!(fmt = dm_malloc(sizeof(*fmt))))
|
if (!(fmt = dm_malloc(sizeof(*fmt)))) {
|
||||||
return_NULL;
|
log_error("Failed to allocate text format type structure.");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
fmt->cmd = cmd;
|
fmt->cmd = cmd;
|
||||||
fmt->ops = &_text_handler;
|
fmt->ops = &_text_handler;
|
||||||
@ -2296,13 +2298,13 @@ struct format_type *create_text_format(struct cmd_context *cmd)
|
|||||||
|
|
||||||
if (!(fmt->labeller = text_labeller_create(fmt))) {
|
if (!(fmt->labeller = text_labeller_create(fmt))) {
|
||||||
log_error("Couldn't create text label handler.");
|
log_error("Couldn't create text label handler.");
|
||||||
goto err;
|
goto bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(label_register_handler(FMT_TEXT_NAME, fmt->labeller))) {
|
if (!(label_register_handler(FMT_TEXT_NAME, fmt->labeller))) {
|
||||||
log_error("Couldn't register text label handler.");
|
log_error("Couldn't register text label handler.");
|
||||||
fmt->labeller->ops->destroy(fmt->labeller);
|
fmt->labeller->ops->destroy(fmt->labeller);
|
||||||
goto err;
|
goto bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((cn = find_config_tree_node(cmd, "metadata/dirs"))) {
|
if ((cn = find_config_tree_node(cmd, "metadata/dirs"))) {
|
||||||
@ -2310,13 +2312,13 @@ struct format_type *create_text_format(struct cmd_context *cmd)
|
|||||||
if (cv->type != DM_CFG_STRING) {
|
if (cv->type != DM_CFG_STRING) {
|
||||||
log_error("Invalid string in config file: "
|
log_error("Invalid string in config file: "
|
||||||
"metadata/dirs");
|
"metadata/dirs");
|
||||||
goto err;
|
goto bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_add_dir(cv->v.str, &mda_lists->dirs)) {
|
if (!_add_dir(cv->v.str, &mda_lists->dirs)) {
|
||||||
log_error("Failed to add %s to text format "
|
log_error("Failed to add %s to text format "
|
||||||
"metadata directory list ", cv->v.str);
|
"metadata directory list ", cv->v.str);
|
||||||
goto err;
|
goto bad;
|
||||||
}
|
}
|
||||||
cmd->independent_metadata_areas = 1;
|
cmd->independent_metadata_areas = 1;
|
||||||
}
|
}
|
||||||
@ -2325,31 +2327,26 @@ struct format_type *create_text_format(struct cmd_context *cmd)
|
|||||||
if ((cn = find_config_tree_node(cmd, "metadata/disk_areas"))) {
|
if ((cn = find_config_tree_node(cmd, "metadata/disk_areas"))) {
|
||||||
for (cn = cn->child; cn; cn = cn->sib) {
|
for (cn = cn->child; cn; cn = cn->sib) {
|
||||||
if (!_get_config_disk_area(cmd, cn, &mda_lists->raws))
|
if (!_get_config_disk_area(cmd, cn, &mda_lists->raws))
|
||||||
goto err;
|
goto_bad;
|
||||||
cmd->independent_metadata_areas = 1;
|
cmd->independent_metadata_areas = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(fmt->orphan_vg = alloc_vg("text_orphan", cmd, fmt->orphan_vg_name))) {
|
if (!(fmt->orphan_vg = alloc_vg("text_orphan", cmd, fmt->orphan_vg_name)))
|
||||||
dm_free(fmt);
|
goto_bad;
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
fic.type = FMT_INSTANCE_AUX_MDAS;
|
fic.type = FMT_INSTANCE_AUX_MDAS;
|
||||||
fic.context.vg_ref.vg_name = fmt->orphan_vg_name;
|
fic.context.vg_ref.vg_name = fmt->orphan_vg_name;
|
||||||
fic.context.vg_ref.vg_id = NULL;
|
fic.context.vg_ref.vg_id = NULL;
|
||||||
if (!(fid = _text_create_text_instance(fmt, &fic))) {
|
if (!(fid = _text_create_text_instance(fmt, &fic)))
|
||||||
log_error("Failed to create format instance");
|
goto_bad;
|
||||||
release_vg(fmt->orphan_vg);
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
vg_set_fid(fmt->orphan_vg, fid);
|
vg_set_fid(fmt->orphan_vg, fid);
|
||||||
|
|
||||||
log_very_verbose("Initialised format: %s", fmt->name);
|
log_very_verbose("Initialised format: %s", fmt->name);
|
||||||
|
|
||||||
return fmt;
|
return fmt;
|
||||||
|
bad:
|
||||||
err:
|
|
||||||
_text_destroy(fmt);
|
_text_destroy(fmt);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user