1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-10-27 10:25:13 +03:00

Convert the straight instances of vg_lock_and_read to new vg_read(_for_update).

Sun May  3 11:40:51 CEST 2009  Petr Rockai <me@mornfall.net>
  * Convert the straight instances of vg_lock_and_read to new vg_read(_for_update).

Rebased 6/26/09 by Dave W.
This commit is contained in:
Dave Wysochanski 2009-07-01 16:59:37 +00:00
parent 4397ad387e
commit b8b3508c59
12 changed files with 32 additions and 61 deletions

View File

@ -240,13 +240,8 @@ static struct volume_group *_get_lvconvert_vg(struct cmd_context *cmd,
{
dev_close_all();
/*
* uuid is here LV uuid, but vg_read will use only first part.
*/
return vg_lock_and_read(cmd, extract_vgname(cmd, lv_name),
uuid, LCK_VG_WRITE,
CLUSTERED | EXPORTED_VG | LVM_WRITE,
CORRECT_INCONSISTENT | FAIL_INCONSISTENT);
return vg_read_for_update(cmd, extract_vgname(cmd, lv_name),
NULL, 0);
}
static struct logical_volume *_get_lvconvert_lv(struct cmd_context *cmd __attribute((unused)),
@ -939,9 +934,8 @@ int lvconvert(struct cmd_context * cmd, int argc, char **argv)
log_verbose("Checking for existing volume group \"%s\"", lp.vg_name);
if (!(vg = vg_lock_and_read(cmd, lp.vg_name, NULL, LCK_VG_WRITE,
CLUSTERED | EXPORTED_VG | LVM_WRITE,
CORRECT_INCONSISTENT | FAIL_INCONSISTENT)))
vg = vg_read_for_update(cmd, lp.vg_name, NULL, 0);
if (vg_read_error(vg))
goto out;
if (!(lvl = find_lv_in_vg(vg, lp.lv_name))) {

View File

@ -994,9 +994,8 @@ int lvcreate(struct cmd_context *cmd, int argc, char **argv)
return EINVALID_CMD_LINE;
log_verbose("Finding volume group \"%s\"", lp.vg_name);
if (!(vg = vg_lock_and_read(cmd, lp.vg_name, NULL, LCK_VG_WRITE,
CLUSTERED | EXPORTED_VG | LVM_WRITE,
CORRECT_INCONSISTENT | FAIL_INCONSISTENT)))
vg = vg_read_for_update(cmd, lp.vg_name, NULL, 0);
if (vg_read_error(vg))
return ECMD_FAILED;
if (!_lvcreate(cmd, vg, &lp))

View File

@ -102,9 +102,8 @@ int lvrename(struct cmd_context *cmd, int argc, char **argv)
}
log_verbose("Checking for existing volume group \"%s\"", vg_name);
if (!(vg = vg_lock_and_read(cmd, vg_name, NULL, LCK_VG_WRITE,
CLUSTERED | EXPORTED_VG | LVM_WRITE,
CORRECT_INCONSISTENT | FAIL_INCONSISTENT)))
vg = vg_read_for_update(cmd, vg_name, NULL, 0);
if (vg_read_error(vg))
return ECMD_FAILED;
if (!(lvl = find_lv_in_vg(vg, lv_name_old))) {

View File

@ -671,9 +671,8 @@ int lvresize(struct cmd_context *cmd, int argc, char **argv)
return EINVALID_CMD_LINE;
log_verbose("Finding volume group %s", lp.vg_name);
if (!(vg = vg_lock_and_read(cmd, lp.vg_name, NULL, LCK_VG_WRITE,
CLUSTERED | EXPORTED_VG | LVM_WRITE,
CORRECT_INCONSISTENT | FAIL_INCONSISTENT))) {
vg = vg_read_for_update(cmd, lp.vg_name, NULL, 0);
if (vg_read_error(vg)) {
stack;
return ECMD_FAILED;
}

View File

@ -147,7 +147,8 @@ static int _wait_for_single_mirror(struct cmd_context *cmd, const char *name, co
}
/* Locks the (possibly renamed) VG again */
if (!(vg = parms->poll_fns->get_copy_vg(cmd, name, uuid))) {
vg = parms->poll_fns->get_copy_vg(cmd, name, uuid);
if (vg_read_error(vg)) {
log_error("ABORTING: Can't reread VG for %s", name);
/* What more could we do here? */
return 0;

View File

@ -57,9 +57,8 @@ static int _pvchange_single(struct cmd_context *cmd, struct physical_volume *pv,
log_verbose("Finding volume group %s of physical volume %s",
vg_name, pv_name);
if (!(vg = vg_lock_and_read(cmd, vg_name, NULL, LCK_VG_WRITE,
CLUSTERED | EXPORTED_VG | LVM_WRITE,
CORRECT_INCONSISTENT | FAIL_INCONSISTENT)))
vg = vg_read_for_update(cmd, vg_name, NULL, 0);
if (vg_read_error(vg))
return_0;
if (!(pvl = find_pv_in_vg(vg, pv_name))) {

View File

@ -29,8 +29,8 @@ static int _pvdisplay_single(struct cmd_context *cmd,
if (!is_orphan(pv) && !vg) {
vg_name = pv_vg_name(pv);
if (!(vg = vg_lock_and_read(cmd, vg_name, (char *)&pv->vgid,
LCK_VG_READ, CLUSTERED, 0))) {
vg = vg_read(cmd, vg_name, (char *)&pv->vgid, 0);
if (vg_read_error(vg)) {
log_error("Skipping volume group %s", vg_name);
/* FIXME If CLUSTERED should return ECMD_PROCESSED here */
return ECMD_FAILED;

View File

@ -89,16 +89,9 @@ static const char *_extract_lvname(struct cmd_context *cmd, const char *vgname,
static struct volume_group *_get_vg(struct cmd_context *cmd, const char *vgname)
{
struct volume_group *vg;
dev_close_all();
if (!(vg = vg_lock_and_read(cmd, vgname, NULL, LCK_VG_WRITE,
CLUSTERED | EXPORTED_VG | LVM_WRITE,
CORRECT_INCONSISTENT | FAIL_INCONSISTENT)))
return NULL;
return vg;
return vg_read_for_update(cmd, vgname, NULL, 0);
}
/* Create list of PVs for allocation of replacement extents */
@ -392,7 +385,8 @@ static int _set_up_pvmove(struct cmd_context *cmd, const char *pv_name,
/* Read VG */
log_verbose("Finding volume group \"%s\"", pv_vg_name(pv));
if (!(vg = _get_vg(cmd, pv_vg_name(pv)))) {
vg = _get_vg(cmd, pv_vg_name(pv));
if (vg_read_error(vg)) {
stack;
return ECMD_FAILED;
}

View File

@ -29,7 +29,6 @@ static int _pv_resize_single(struct cmd_context *cmd,
const uint64_t new_size)
{
struct pv_list *pvl;
int consistent = 1;
uint64_t size = 0;
uint32_t new_pe_count = 0;
int r = 0;
@ -59,19 +58,9 @@ static int _pv_resize_single(struct cmd_context *cmd,
} else {
vg_name = pv_vg_name(pv);
if (!lock_vol(cmd, vg_name, LCK_VG_WRITE)) {
log_error("Can't get lock for %s", pv_vg_name(pv));
return 0;
}
vg = vg_read_for_update(cmd, vg_name, NULL, 0);
if (!(vg = vg_read_internal(cmd, vg_name, NULL, &consistent))) {
unlock_vg(cmd, vg_name);
log_error("Unable to find volume group of \"%s\"",
pv_name);
return 0;
}
if (!vg_check_status(vg, CLUSTERED | EXPORTED_VG | LVM_WRITE))
if (vg_read_error(vg))
goto bad;
if (!(pvl = find_pv_in_vg(vg, pv_name))) {

View File

@ -132,8 +132,8 @@ static int _pvs_single(struct cmd_context *cmd, struct volume_group *vg,
if (is_pv(pv) && !is_orphan(pv) && !vg) {
vg_name = pv_vg_name(pv);
if (!(vg = vg_lock_and_read(cmd, vg_name, (char *)&pv->vgid,
LCK_VG_READ, CLUSTERED, 0))) {
vg = vg_read(cmd, vg_name, (char *)&pv->vgid, 0);
if (vg_read_error(vg)) {
log_error("Skipping volume group %s", vg_name);
return ECMD_FAILED;
}

View File

@ -42,13 +42,12 @@ int vgextend(struct cmd_context *cmd, int argc, char **argv)
}
log_verbose("Checking for volume group \"%s\"", vg_name);
if (!(vg = vg_lock_and_read(cmd, vg_name, NULL, LCK_VG_WRITE,
CLUSTERED | EXPORTED_VG |
LVM_WRITE | RESIZEABLE_VG,
CORRECT_INCONSISTENT | FAIL_INCONSISTENT))) {
vg = vg_read_for_update(cmd, vg_name, NULL,
READ_REQUIRE_RESIZEABLE | LOCK_NONBLOCKING);
if (vg_read_error(vg)) {
unlock_vg(cmd, VG_ORPHANS);
return ECMD_FAILED;
}
}
/********** FIXME
log_print("maximum logical volume size is %s",
(dummy = lvm_show_size(LVM_LV_SIZE_MAX(vg) / 2, LONG)));

View File

@ -28,16 +28,14 @@ static int _vgmerge_single(struct cmd_context *cmd, const char *vg_name_to,
}
log_verbose("Checking for volume group \"%s\"", vg_name_to);
if (!(vg_to = vg_lock_and_read(cmd, vg_name_to, NULL, LCK_VG_WRITE,
CLUSTERED | EXPORTED_VG | LVM_WRITE,
CORRECT_INCONSISTENT | FAIL_INCONSISTENT)))
vg_to = vg_read_for_update(cmd, vg_name_to, NULL, 0);
if (vg_read_error(vg_to))
return ECMD_FAILED;
log_verbose("Checking for volume group \"%s\"", vg_name_from);
if (!(vg_from = vg_lock_and_read(cmd, vg_name_from, NULL,
LCK_VG_WRITE,
CLUSTERED | EXPORTED_VG | LVM_WRITE,
CORRECT_INCONSISTENT | FAIL_INCONSISTENT))) {
vg_from = vg_read_for_update(cmd, vg_name_from, NULL,
LOCK_NONBLOCKING);
if (vg_read_error(vg_from)) {
unlock_and_release_vg(cmd, vg_to, vg_name_to);
return ECMD_FAILED;
}