mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
Merge branch 'master' of git+ssh://sourceware.org/git/lvm2
This commit is contained in:
commit
4d19321fd3
6
lib/cache/lvmcache.c
vendored
6
lib/cache/lvmcache.c
vendored
@ -1010,7 +1010,8 @@ static void _filter_duplicate_devs(struct cmd_context *cmd)
|
|||||||
|
|
||||||
dm_list_iterate_items_safe(devl, devl2, &_unused_duplicate_devs) {
|
dm_list_iterate_items_safe(devl, devl2, &_unused_duplicate_devs) {
|
||||||
|
|
||||||
info = lvmcache_info_from_pvid(devl->dev->pvid, NULL, 0);
|
if (!(info = lvmcache_info_from_pvid(devl->dev->pvid, NULL, 0)))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (MAJOR(info->dev->dev) == dt->md_major) {
|
if (MAJOR(info->dev->dev) == dt->md_major) {
|
||||||
log_debug_devs("Ignoring md component duplicate %s", dev_name(devl->dev));
|
log_debug_devs("Ignoring md component duplicate %s", dev_name(devl->dev));
|
||||||
@ -1038,7 +1039,8 @@ static void _warn_duplicate_devs(struct cmd_context *cmd)
|
|||||||
|
|
||||||
dm_list_iterate_items_safe(devl, devl2, &_unused_duplicate_devs) {
|
dm_list_iterate_items_safe(devl, devl2, &_unused_duplicate_devs) {
|
||||||
/* info for the preferred device that we're actually using */
|
/* info for the preferred device that we're actually using */
|
||||||
info = lvmcache_info_from_pvid(devl->dev->pvid, NULL, 0);
|
if (!(info = lvmcache_info_from_pvid(devl->dev->pvid, NULL, 0)))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (!id_write_format((const struct id *)info->dev->pvid, uuid, sizeof(uuid)))
|
if (!id_write_format((const struct id *)info->dev->pvid, uuid, sizeof(uuid)))
|
||||||
stack;
|
stack;
|
||||||
|
6
lib/cache/lvmetad.c
vendored
6
lib/cache/lvmetad.c
vendored
@ -1069,14 +1069,14 @@ struct volume_group *lvmetad_vg_lookup(struct cmd_context *cmd, const char *vgna
|
|||||||
* host.
|
* host.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (is_lockd_type(vg->lock_type) && cmd->include_shared_vgs) {
|
if (vg_is_shared(vg) && cmd->include_shared_vgs) {
|
||||||
log_debug_lvmetad("Rescan VG %s because including shared", vgname);
|
log_debug_lvmetad("Rescan VG %s because including shared", vgname);
|
||||||
rescan = 1;
|
rescan = 1;
|
||||||
} else if (is_lockd_type(vg->lock_type) && cmd->lockd_vg_rescan) {
|
} else if (vg_is_shared(vg) && cmd->lockd_vg_rescan) {
|
||||||
log_debug_lvmetad("Rescan VG %s because no lvmlockd lock is held", vgname);
|
log_debug_lvmetad("Rescan VG %s because no lvmlockd lock is held", vgname);
|
||||||
rescan = 1;
|
rescan = 1;
|
||||||
} else if (dm_config_find_node(reply.cft->root, "vg_invalid")) {
|
} else if (dm_config_find_node(reply.cft->root, "vg_invalid")) {
|
||||||
if (!is_lockd_type(vg->lock_type)) {
|
if (!vg_is_shared(vg)) {
|
||||||
/* Can happen if a previous command failed/crashed without updating lvmetad. */
|
/* Can happen if a previous command failed/crashed without updating lvmetad. */
|
||||||
log_warn("WARNING: Reading VG %s from disk because lvmetad metadata is invalid.", vgname);
|
log_warn("WARNING: Reading VG %s from disk because lvmetad metadata is invalid.", vgname);
|
||||||
} else {
|
} else {
|
||||||
|
@ -832,7 +832,7 @@ int label_scan(struct cmd_context *cmd)
|
|||||||
|
|
||||||
while ((dev = dev_iter_get(iter))) {
|
while ((dev = dev_iter_get(iter))) {
|
||||||
if (!(devl = dm_zalloc(sizeof(*devl))))
|
if (!(devl = dm_zalloc(sizeof(*devl))))
|
||||||
return 0;
|
continue;
|
||||||
devl->dev = dev;
|
devl->dev = dev;
|
||||||
dm_list_add(&all_devs, &devl->list);
|
dm_list_add(&all_devs, &devl->list);
|
||||||
|
|
||||||
|
@ -1020,7 +1020,7 @@ int lockd_start_vg(struct cmd_context *cmd, struct volume_group *vg, int start_i
|
|||||||
|
|
||||||
memset(uuid, 0, sizeof(uuid));
|
memset(uuid, 0, sizeof(uuid));
|
||||||
|
|
||||||
if (!is_lockd_type(vg->lock_type))
|
if (!vg_is_shared(vg))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (!_use_lvmlockd) {
|
if (!_use_lvmlockd) {
|
||||||
@ -1111,7 +1111,7 @@ int lockd_stop_vg(struct cmd_context *cmd, struct volume_group *vg)
|
|||||||
int result;
|
int result;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!is_lockd_type(vg->lock_type))
|
if (!vg_is_shared(vg)))
|
||||||
return 1;
|
return 1;
|
||||||
if (!_use_lvmlockd)
|
if (!_use_lvmlockd)
|
||||||
return 0;
|
return 0;
|
||||||
@ -1996,7 +1996,7 @@ int lockd_vg_update(struct volume_group *vg)
|
|||||||
int result;
|
int result;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!is_lockd_type(vg->lock_type))
|
if (!vg_is_shared(vg))
|
||||||
return 1;
|
return 1;
|
||||||
if (!_use_lvmlockd)
|
if (!_use_lvmlockd)
|
||||||
return 0;
|
return 0;
|
||||||
@ -2253,7 +2253,7 @@ static int _lockd_lv_mirror(struct cmd_context *cmd, struct logical_volume *lv,
|
|||||||
int lockd_lv(struct cmd_context *cmd, struct logical_volume *lv,
|
int lockd_lv(struct cmd_context *cmd, struct logical_volume *lv,
|
||||||
const char *def_mode, uint32_t flags)
|
const char *def_mode, uint32_t flags)
|
||||||
{
|
{
|
||||||
if (!is_lockd_type(lv->vg->lock_type))
|
if (!vg_is_shared(lv->vg))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (!_use_lvmlockd) {
|
if (!_use_lvmlockd) {
|
||||||
@ -2586,7 +2586,7 @@ int lockd_rename_vg_before(struct cmd_context *cmd, struct volume_group *vg)
|
|||||||
int result;
|
int result;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!is_lockd_type(vg->lock_type))
|
if (!vg_is_shared(vg))
|
||||||
return 1;
|
return 1;
|
||||||
if (!_use_lvmlockd)
|
if (!_use_lvmlockd)
|
||||||
return 0;
|
return 0;
|
||||||
@ -2650,7 +2650,7 @@ int lockd_rename_vg_final(struct cmd_context *cmd, struct volume_group *vg, int
|
|||||||
int result;
|
int result;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!is_lockd_type(vg->lock_type))
|
if (!vg_is_shared(vg))
|
||||||
return 1;
|
return 1;
|
||||||
if (!_use_lvmlockd)
|
if (!_use_lvmlockd)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -7801,7 +7801,7 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg,
|
|||||||
lv->status |= LV_TEMPORARY;
|
lv->status |= LV_TEMPORARY;
|
||||||
|
|
||||||
if (seg_is_cache(lp)) {
|
if (seg_is_cache(lp)) {
|
||||||
if (is_lockd_type(lv->vg->lock_type)) {
|
if (vg_is_shared(vg)) {
|
||||||
if (is_change_activating(lp->activate)) {
|
if (is_change_activating(lp->activate)) {
|
||||||
if (!lv_active_change(cmd, lv, CHANGE_AEY, 0)) {
|
if (!lv_active_change(cmd, lv, CHANGE_AEY, 0)) {
|
||||||
log_error("Aborting. Failed to activate LV %s.",
|
log_error("Aborting. Failed to activate LV %s.",
|
||||||
|
@ -2576,7 +2576,7 @@ int vg_validate(struct volume_group *vg)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_lockd_type(vg->lock_type)) {
|
if (vg_is_shared(vg)) {
|
||||||
if (!vg->lock_args) {
|
if (!vg->lock_args) {
|
||||||
log_error(INTERNAL_ERROR "VG %s with lock_type %s without lock_args",
|
log_error(INTERNAL_ERROR "VG %s with lock_type %s without lock_args",
|
||||||
vg->name, vg->lock_type);
|
vg->name, vg->lock_type);
|
||||||
@ -2612,7 +2612,7 @@ int vg_validate(struct volume_group *vg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
dm_list_iterate_items(lvl, &vg->lvs) {
|
dm_list_iterate_items(lvl, &vg->lvs) {
|
||||||
if (is_lockd_type(vg->lock_type)) {
|
if (vg_is_shared(vg)) {
|
||||||
if (lockd_lv_uses_lock(lvl->lv)) {
|
if (lockd_lv_uses_lock(lvl->lv)) {
|
||||||
if (vg->skip_validate_lock_args)
|
if (vg->skip_validate_lock_args)
|
||||||
continue;
|
continue;
|
||||||
@ -2929,13 +2929,15 @@ int vg_write(struct volume_group *vg)
|
|||||||
struct lv_list *lvl;
|
struct lv_list *lvl;
|
||||||
int revert = 0, wrote = 0;
|
int revert = 0, wrote = 0;
|
||||||
|
|
||||||
dm_list_iterate_items(lvl, &vg->lvs) {
|
if (vg_is_shared(vg)) {
|
||||||
if (lvl->lv->lock_args && !strcmp(lvl->lv->lock_args, "pending")) {
|
dm_list_iterate_items(lvl, &vg->lvs) {
|
||||||
if (!lockd_init_lv_args(vg->cmd, vg, lvl->lv, vg->lock_type, &lvl->lv->lock_args)) {
|
if (lvl->lv->lock_args && !strcmp(lvl->lv->lock_args, "pending")) {
|
||||||
log_error("Cannot allocate lock for new LV.");
|
if (!lockd_init_lv_args(vg->cmd, vg, lvl->lv, vg->lock_type, &lvl->lv->lock_args)) {
|
||||||
return 0;
|
log_error("Cannot allocate lock for new LV.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
lvl->lv->new_lock_args = 1;
|
||||||
}
|
}
|
||||||
lvl->lv->new_lock_args = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3556,7 +3558,7 @@ static int _repair_inconsistent_vg(struct volume_group *vg, uint32_t lockd_state
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_lockd_type(vg->lock_type) && !(lockd_state & LDST_EX)) {
|
if (vg_is_shared(vg) && !(lockd_state & LDST_EX)) {
|
||||||
log_verbose("Skip metadata repair for shared VG without exclusive lock.");
|
log_verbose("Skip metadata repair for shared VG without exclusive lock.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -3602,7 +3604,7 @@ static int _wipe_outdated_pvs(struct cmd_context *cmd, struct volume_group *vg,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_lockd_type(vg->lock_type) && !(lockd_state & LDST_EX)) {
|
if (vg_is_shared(vg) && !(lockd_state & LDST_EX)) {
|
||||||
log_verbose("Skip wiping outdated PVs for shared VG without exclusive lock.");
|
log_verbose("Skip wiping outdated PVs for shared VG without exclusive lock.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -3684,7 +3686,7 @@ static int _check_or_repair_pv_ext(struct cmd_context *cmd,
|
|||||||
"VG %s but not marked as used.",
|
"VG %s but not marked as used.",
|
||||||
pv_dev_name(pvl->pv), vg->name);
|
pv_dev_name(pvl->pv), vg->name);
|
||||||
*inconsistent_pvs = 1;
|
*inconsistent_pvs = 1;
|
||||||
} else if (is_lockd_type(vg->lock_type) && !(lockd_state & LDST_EX)) {
|
} else if (vg_is_shared(vg) && !(lockd_state & LDST_EX)) {
|
||||||
log_warn("Skip repair of PV %s that is in shared "
|
log_warn("Skip repair of PV %s that is in shared "
|
||||||
"VG %s but not marked as used.",
|
"VG %s but not marked as used.",
|
||||||
pv_dev_name(pvl->pv), vg->name);
|
pv_dev_name(pvl->pv), vg->name);
|
||||||
@ -5260,7 +5262,7 @@ static int _access_vg_lock_type(struct cmd_context *cmd, struct volume_group *vg
|
|||||||
/*
|
/*
|
||||||
* Local VG requires no lock from lvmlockd.
|
* Local VG requires no lock from lvmlockd.
|
||||||
*/
|
*/
|
||||||
if (!is_lockd_type(vg->lock_type))
|
if (!vg_is_shared(vg))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -426,7 +426,7 @@ static int _activate_lv_like_model(struct logical_volume *model,
|
|||||||
{
|
{
|
||||||
/* FIXME: run all cases through lv_active_change when clvm variants are gone. */
|
/* FIXME: run all cases through lv_active_change when clvm variants are gone. */
|
||||||
|
|
||||||
if (is_lockd_type(lv->vg->lock_type))
|
if (vg_is_shared(vg))
|
||||||
return lv_active_change(lv->vg->cmd, lv, CHANGE_AEY, 0);
|
return lv_active_change(lv->vg->cmd, lv, CHANGE_AEY, 0);
|
||||||
|
|
||||||
if (lv_is_active_exclusive(model)) {
|
if (lv_is_active_exclusive(model)) {
|
||||||
|
@ -3426,7 +3426,7 @@ int lv_raid_split(struct logical_volume *lv, int yes, const char *split_name,
|
|||||||
|
|
||||||
/* FIXME: run all cases through lv_active_change when clvm variants are gone. */
|
/* FIXME: run all cases through lv_active_change when clvm variants are gone. */
|
||||||
|
|
||||||
if (is_lockd_type(lvl->lv->vg->lock_type)) {
|
if (vg_is_shared(lvl->lv->vg)) {
|
||||||
if (!lv_active_change(lv->vg->cmd, lvl->lv, CHANGE_AEY, 0))
|
if (!lv_active_change(lv->vg->cmd, lvl->lv, CHANGE_AEY, 0))
|
||||||
return_0;
|
return_0;
|
||||||
} else if (!activate_lv_excl_local(cmd, lvl->lv))
|
} else if (!activate_lv_excl_local(cmd, lvl->lv))
|
||||||
|
@ -709,7 +709,7 @@ char *vg_attr_dup(struct dm_pool *mem, const struct volume_group *vg)
|
|||||||
|
|
||||||
if (vg_is_clustered(vg))
|
if (vg_is_clustered(vg))
|
||||||
repstr[5] = 'c';
|
repstr[5] = 'c';
|
||||||
else if (is_lockd_type(vg->lock_type))
|
else if (vg_is_shared(vg))
|
||||||
repstr[5] = 's';
|
repstr[5] = 's';
|
||||||
else
|
else
|
||||||
repstr[5] = '-';
|
repstr[5] = '-';
|
||||||
|
@ -1802,7 +1802,7 @@ static int _lvconvert_splitsnapshot(struct cmd_context *cmd, struct logical_volu
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_lockd_type(vg->lock_type)) {
|
if (vg_is_shared(vg)) {
|
||||||
/* FIXME: we need to create a lock for the new LV. */
|
/* FIXME: we need to create a lock for the new LV. */
|
||||||
log_error("Unable to split snapshots in VG with lock_type %s.", vg->lock_type);
|
log_error("Unable to split snapshots in VG with lock_type %s.", vg->lock_type);
|
||||||
return 0;
|
return 0;
|
||||||
@ -2622,7 +2622,7 @@ static int _lvconvert_to_thin_with_external(struct cmd_context *cmd,
|
|||||||
*/
|
*/
|
||||||
lvc.lv_name = origin_name;
|
lvc.lv_name = origin_name;
|
||||||
|
|
||||||
if (is_lockd_type(vg->lock_type)) {
|
if (vg_is_shared(vg)) {
|
||||||
/*
|
/*
|
||||||
* FIXME: external origins don't work in lockd VGs.
|
* FIXME: external origins don't work in lockd VGs.
|
||||||
* Prior to the lvconvert, there's a lock associated with
|
* Prior to the lvconvert, there's a lock associated with
|
||||||
@ -2936,7 +2936,7 @@ static int _lvconvert_to_pool(struct cmd_context *cmd,
|
|||||||
zero_metadata = (to_cachepool) ? arg_int_value(cmd, zero_ARG, 1) : 1;
|
zero_metadata = (to_cachepool) ? arg_int_value(cmd, zero_ARG, 1) : 1;
|
||||||
|
|
||||||
/* An existing LV needs to have its lock freed once it becomes a data LV. */
|
/* An existing LV needs to have its lock freed once it becomes a data LV. */
|
||||||
if (is_lockd_type(vg->lock_type) && lv->lock_args) {
|
if (vg_is_shared(vg) && lv->lock_args) {
|
||||||
lockd_data_args = dm_pool_strdup(cmd->mem, lv->lock_args);
|
lockd_data_args = dm_pool_strdup(cmd->mem, lv->lock_args);
|
||||||
lockd_data_name = dm_pool_strdup(cmd->mem, lv->name);
|
lockd_data_name = dm_pool_strdup(cmd->mem, lv->name);
|
||||||
memcpy(&lockd_data_id, &lv->lvid.id[1], sizeof(struct id));
|
memcpy(&lockd_data_id, &lv->lvid.id[1], sizeof(struct id));
|
||||||
@ -2975,7 +2975,7 @@ static int _lvconvert_to_pool(struct cmd_context *cmd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* An existing LV needs to have its lock freed once it becomes a meta LV. */
|
/* An existing LV needs to have its lock freed once it becomes a meta LV. */
|
||||||
if (is_lockd_type(vg->lock_type) && metadata_lv->lock_args) {
|
if (vg_is_shared(vg) && metadata_lv->lock_args) {
|
||||||
lockd_meta_args = dm_pool_strdup(cmd->mem, metadata_lv->lock_args);
|
lockd_meta_args = dm_pool_strdup(cmd->mem, metadata_lv->lock_args);
|
||||||
lockd_meta_name = dm_pool_strdup(cmd->mem, metadata_lv->name);
|
lockd_meta_name = dm_pool_strdup(cmd->mem, metadata_lv->name);
|
||||||
memcpy(&lockd_meta_id, &metadata_lv->lvid.id[1], sizeof(struct id));
|
memcpy(&lockd_meta_id, &metadata_lv->lvid.id[1], sizeof(struct id));
|
||||||
@ -3241,7 +3241,7 @@ static int _lvconvert_to_pool(struct cmd_context *cmd,
|
|||||||
* Locks are removed from existing LVs that are being converted to
|
* Locks are removed from existing LVs that are being converted to
|
||||||
* data and meta LVs (they are unlocked and deleted below.)
|
* data and meta LVs (they are unlocked and deleted below.)
|
||||||
*/
|
*/
|
||||||
if (is_lockd_type(vg->lock_type)) {
|
if (vg_is_shared(vg)) {
|
||||||
if (to_cachepool) {
|
if (to_cachepool) {
|
||||||
data_lv->lock_args = NULL;
|
data_lv->lock_args = NULL;
|
||||||
metadata_lv->lock_args = NULL;
|
metadata_lv->lock_args = NULL;
|
||||||
@ -3851,7 +3851,7 @@ static int _lvconvert_combine_split_snapshot_single(struct cmd_context *cmd,
|
|||||||
{
|
{
|
||||||
const char *origin_name = cmd->position_argv[0];
|
const char *origin_name = cmd->position_argv[0];
|
||||||
|
|
||||||
if (is_lockd_type(lv->vg->lock_type)) {
|
if (vg_is_shared(lv->vg)) {
|
||||||
log_error("Unable to combine split snapshots in VG with lock_type %s", lv->vg->lock_type);
|
log_error("Unable to combine split snapshots in VG with lock_type %s", lv->vg->lock_type);
|
||||||
return ECMD_FAILED;
|
return ECMD_FAILED;
|
||||||
}
|
}
|
||||||
@ -4225,7 +4225,7 @@ static int _lvconvert_swap_pool_metadata_single(struct cmd_context *cmd,
|
|||||||
struct logical_volume *metadata_lv;
|
struct logical_volume *metadata_lv;
|
||||||
const char *metadata_name;
|
const char *metadata_name;
|
||||||
|
|
||||||
if (is_lockd_type(lv->vg->lock_type)) {
|
if (vg_is_shared(lv->vg)) {
|
||||||
/* FIXME: need to swap locks betwen LVs? */
|
/* FIXME: need to swap locks betwen LVs? */
|
||||||
log_error("Unable to swap pool metadata in VG with lock_type %s", lv->vg->lock_type);
|
log_error("Unable to swap pool metadata in VG with lock_type %s", lv->vg->lock_type);
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -1231,7 +1231,7 @@ static int _determine_cache_argument(struct volume_group *vg,
|
|||||||
display_lvname(lv));
|
display_lvname(lv));
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
} else if (is_lockd_type(vg->lock_type)) {
|
} else if (vg_is_shared(vg)) {
|
||||||
if (!lv_active_change(cmd, lv, CHANGE_AEY, 0)) {
|
if (!lv_active_change(cmd, lv, CHANGE_AEY, 0)) {
|
||||||
log_error("Cannot activate cache origin %s.",
|
log_error("Cannot activate cache origin %s.",
|
||||||
display_lvname(lv));
|
display_lvname(lv));
|
||||||
@ -1645,7 +1645,7 @@ static int _lvcreate_single(struct cmd_context *cmd, const char *vg_name,
|
|||||||
lp->snapshot ? " as snapshot of " : "",
|
lp->snapshot ? " as snapshot of " : "",
|
||||||
lp->snapshot ? lp->origin_name : "", lp->segtype->name);
|
lp->snapshot ? lp->origin_name : "", lp->segtype->name);
|
||||||
|
|
||||||
if (is_lockd_type(vg->lock_type)) {
|
if (vg_is_shared(vg)) {
|
||||||
if (cmd->command->command_enum == lvcreate_thin_vol_with_thinpool_or_sparse_snapshot_CMD) {
|
if (cmd->command->command_enum == lvcreate_thin_vol_with_thinpool_or_sparse_snapshot_CMD) {
|
||||||
log_error("Use lvconvert to create thin pools and cache pools in a shared VG.");
|
log_error("Use lvconvert to create thin pools and cache pools in a shared VG.");
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -642,7 +642,7 @@ static int _pvmove_setup_single(struct cmd_context *cmd,
|
|||||||
* other hosts. For LVs that are active on multiple hosts (sh), we
|
* other hosts. For LVs that are active on multiple hosts (sh), we
|
||||||
* would need to used cluster mirrors.
|
* would need to used cluster mirrors.
|
||||||
*/
|
*/
|
||||||
if (is_lockd_type(vg->lock_type)) {
|
if (vg_is_shared(vg))) {
|
||||||
if (!lv) {
|
if (!lv) {
|
||||||
log_error("pvmove in a shared VG requires a named LV.");
|
log_error("pvmove in a shared VG requires a named LV.");
|
||||||
return ECMD_FAILED;
|
return ECMD_FAILED;
|
||||||
|
@ -197,7 +197,7 @@ static int _pvscan_autoactivate_single(struct cmd_context *cmd, const char *vg_n
|
|||||||
if (vg_is_exported(vg))
|
if (vg_is_exported(vg))
|
||||||
return ECMD_PROCESSED;
|
return ECMD_PROCESSED;
|
||||||
|
|
||||||
if (is_lockd_type(vg->lock_type))
|
if (vg_is_shared(vg)))
|
||||||
return ECMD_PROCESSED;
|
return ECMD_PROCESSED;
|
||||||
|
|
||||||
log_debug("pvscan autoactivating VG %s.", vg_name);
|
log_debug("pvscan autoactivating VG %s.", vg_name);
|
||||||
|
@ -631,7 +631,7 @@ static int _vgchange_lock_start(struct cmd_context *cmd, struct volume_group *vg
|
|||||||
int auto_opt = 0;
|
int auto_opt = 0;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
if (!is_lockd_type(vg->lock_type))
|
if (!vg_is_shared(vg))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (arg_is_set(cmd, force_ARG))
|
if (arg_is_set(cmd, force_ARG))
|
||||||
|
@ -207,7 +207,7 @@ int vgcreate(struct cmd_context *cmd, int argc, char **argv)
|
|||||||
* used after this command completes (otherwise, the VG can only be
|
* used after this command completes (otherwise, the VG can only be
|
||||||
* read without locks until the lockspace is done starting.)
|
* read without locks until the lockspace is done starting.)
|
||||||
*/
|
*/
|
||||||
if (is_lockd_type(vg->lock_type)) {
|
if (vg_is_shared(vg)) {
|
||||||
const char *start_opt = arg_str_value(cmd, lockopt_ARG, NULL);
|
const char *start_opt = arg_str_value(cmd, lockopt_ARG, NULL);
|
||||||
|
|
||||||
if (!lockd_start_vg(cmd, vg, 1)) {
|
if (!lockd_start_vg(cmd, vg, 1)) {
|
||||||
|
@ -28,7 +28,7 @@ static int vgexport_single(struct cmd_context *cmd __attribute__((unused)),
|
|||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_lockd_type(vg->lock_type)) {
|
if (vg_is_shared(vg)) {
|
||||||
struct lv_list *lvl;
|
struct lv_list *lvl;
|
||||||
dm_list_iterate_items(lvl, &vg->lvs) {
|
dm_list_iterate_items(lvl, &vg->lvs) {
|
||||||
if (!lockd_lv_uses_lock(lvl->lv))
|
if (!lockd_lv_uses_lock(lvl->lv))
|
||||||
|
@ -38,7 +38,7 @@ static int _vgimport_single(struct cmd_context *cmd,
|
|||||||
|
|
||||||
vg->status &= ~EXPORTED_VG;
|
vg->status &= ~EXPORTED_VG;
|
||||||
|
|
||||||
if (!is_lockd_type(vg->lock_type))
|
if (!vg_is_shared(vg))
|
||||||
vg->system_id = cmd->system_id ? dm_pool_strdup(vg->vgmem, cmd->system_id) : NULL;
|
vg->system_id = cmd->system_id ? dm_pool_strdup(vg->vgmem, cmd->system_id) : NULL;
|
||||||
|
|
||||||
dm_list_iterate_items(pvl, &vg->pvs) {
|
dm_list_iterate_items(pvl, &vg->pvs) {
|
||||||
|
@ -26,7 +26,7 @@ static struct volume_group *_vgmerge_vg_read(struct cmd_context *cmd,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_lockd_type(vg->lock_type)) {
|
if (vg_is_shared(vg)) {
|
||||||
log_error("vgmerge not allowed for lock_type %s", vg->lock_type);
|
log_error("vgmerge not allowed for lock_type %s", vg->lock_type);
|
||||||
unlock_and_release_vg(cmd, vg, vg_name);
|
unlock_and_release_vg(cmd, vg, vg_name);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -517,7 +517,7 @@ static struct volume_group *_vgsplit_from(struct cmd_context *cmd,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_lockd_type(vg_from->lock_type)) {
|
if (vg_is_shared(vg_from)) {
|
||||||
log_error("vgsplit not allowed for lock_type %s", vg_from->lock_type);
|
log_error("vgsplit not allowed for lock_type %s", vg_from->lock_type);
|
||||||
unlock_and_release_vg(cmd, vg_from, vg_name_from);
|
unlock_and_release_vg(cmd, vg_from, vg_name_from);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user