1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-22 17:35:59 +03:00

lib: drop unneeded vg_read call

Since we take a lock inside vg_lock_newname() and we do a full
detection of presence of  vgname inside all scanned labels,
there is no point to do this for second time to be sure
there is no such vg.

The only side-effect of such call would be a full validation of
some already exising VG metadata - but that's not the task for
vgcreate when create a new VG.

This call noticable reduces number of scans during 'vgcreate'.
This commit is contained in:
Zdenek Kabelac 2015-03-06 10:22:33 +01:00
parent a9b28a4f21
commit 04101bc430
2 changed files with 1 additions and 10 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.118 - Version 2.02.118 -
================================= =================================
Don't do a full read of VG when creating a new VG with an existing name.
Reduce number of VG metadata parsing when looking for vgname on a PV. Reduce number of VG metadata parsing when looking for vgname on a PV.
Avoid reparsing same metadata when reading same metadata from multiple PVs. Avoid reparsing same metadata when reading same metadata from multiple PVs.
Save extra device open/close when scanning device for size. Save extra device open/close when scanning device for size.

View File

@ -1009,7 +1009,6 @@ struct volume_group *vg_create(struct cmd_context *cmd, const char *vg_name)
.context.vg_ref.vg_name = vg_name .context.vg_ref.vg_name = vg_name
}; };
struct format_instance *fid; struct format_instance *fid;
int consistent = 0;
uint32_t rc; uint32_t rc;
if (!validate_name(vg_name)) { if (!validate_name(vg_name)) {
@ -1023,15 +1022,6 @@ struct volume_group *vg_create(struct cmd_context *cmd, const char *vg_name)
/* NOTE: let caller decide - this may be check for existence */ /* NOTE: let caller decide - this may be check for existence */
return _vg_make_handle(cmd, NULL, rc); return _vg_make_handle(cmd, NULL, rc);
/* FIXME: Is this vg_read_internal necessary? Move it inside
vg_lock_newname? */
/* is this vg name already in use ? */
if ((vg = vg_read_internal(cmd, vg_name, NULL, WARN_PV_READ, &consistent))) {
log_error("A volume group called '%s' already exists.", vg_name);
unlock_and_release_vg(cmd, vg, vg_name);
return _vg_make_handle(cmd, NULL, FAILED_EXIST);
}
/* Strip dev_dir if present */ /* Strip dev_dir if present */
vg_name = strip_dir(vg_name, cmd->dev_dir); vg_name = strip_dir(vg_name, cmd->dev_dir);