mirror of
git://sourceware.org/git/lvm2.git
synced 2025-02-04 21:47:46 +03:00
mirror: remove unused code
This commit is contained in:
parent
cf426744ae
commit
4b7bcf3ed4
@ -1176,163 +1176,6 @@ int collapse_mirrored_lv(struct logical_volume *lv)
|
||||
return 1;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* FIXME: reconfigure_mirror_images: remove this code? */
|
||||
static int _get_mirror_fault_policy(struct cmd_context *cmd __attribute__((unused)),
|
||||
int log_policy)
|
||||
{
|
||||
const char *policy = NULL;
|
||||
/*
|
||||
if (log_policy)
|
||||
policy = find_config_tree_str(cmd, activation_mirror_log_fault_policy_CFG);
|
||||
else {
|
||||
policy = find_config_tree_str(cmd, activation_mirror_image_fault_policy_CFG);
|
||||
if (!policy)
|
||||
policy = find_config_tree_str(cmd, activation_mirror_device_fault_policy_CFG);
|
||||
}
|
||||
*/
|
||||
if (!strcmp(policy, "remove"))
|
||||
return MIRROR_REMOVE;
|
||||
else if (!strcmp(policy, "allocate"))
|
||||
return MIRROR_ALLOCATE;
|
||||
else if (!strcmp(policy, "allocate_anywhere"))
|
||||
return MIRROR_ALLOCATE_ANYWHERE;
|
||||
|
||||
if (log_policy)
|
||||
log_error("Bad activation/mirror_log_fault_policy");
|
||||
else
|
||||
log_error("Bad activation/mirror_device_fault_policy");
|
||||
|
||||
return MIRROR_REMOVE;
|
||||
}
|
||||
|
||||
static int _get_mirror_log_fault_policy(struct cmd_context *cmd)
|
||||
{
|
||||
return _get_mirror_fault_policy(cmd, 1);
|
||||
}
|
||||
|
||||
static int _get_mirror_device_fault_policy(struct cmd_context *cmd)
|
||||
{
|
||||
return _get_mirror_fault_policy(cmd, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* replace_mirror_images
|
||||
* @mirrored_seg: segment (which may be linear now) to restore
|
||||
* @num_mirrors: number of copies we should end up with
|
||||
* @replace_log: replace log if not present
|
||||
* @in_sync: was the original mirror in-sync?
|
||||
*
|
||||
* in_sync will be set to 0 if new mirror devices are being added
|
||||
* In other words, it is only useful if the log (and only the log)
|
||||
* is being restored.
|
||||
*
|
||||
* Returns: 0 on failure, 1 on reconfig, -1 if no reconfig done
|
||||
*/
|
||||
static int _replace_mirror_images(struct lv_segment *mirrored_seg,
|
||||
uint32_t num_mirrors,
|
||||
int log_policy, int in_sync)
|
||||
{
|
||||
int r = -1;
|
||||
struct logical_volume *lv = mirrored_seg->lv;
|
||||
|
||||
/* FIXME: Use lvconvert rather than duplicating its code */
|
||||
|
||||
if (mirrored_seg->area_count < num_mirrors) {
|
||||
log_warn("WARNING: Failed to replace mirror device in %s.",
|
||||
display_lvname(mirrored_seg->lv);
|
||||
|
||||
if ((mirrored_seg->area_count > 1) && !mirrored_seg->log_lv)
|
||||
log_warn("WARNING: Use 'lvconvert -m %d %s --corelog' to replace failed devices.",
|
||||
num_mirrors - 1, display_lvname(lv));
|
||||
else
|
||||
log_warn("WARNING: Use 'lvconvert -m %d %s' to replace failed devices.",
|
||||
num_mirrors - 1, display_lvname(lv));
|
||||
r = 0;
|
||||
|
||||
/* REMEMBER/FIXME: set in_sync to 0 if a new mirror device was added */
|
||||
in_sync = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* FIXME: right now, we ignore the allocation policy specified to
|
||||
* allocate the new log.
|
||||
*/
|
||||
if ((mirrored_seg->area_count > 1) && !mirrored_seg->log_lv &&
|
||||
(log_policy != MIRROR_REMOVE)) {
|
||||
log_warn("WARNING: Failed to replace mirror log device in %s.",
|
||||
display_lvname(lv));
|
||||
|
||||
log_warn("WARNING: Use 'lvconvert -m %d %s' to replace failed devices.",
|
||||
mirrored_seg->area_count - 1 , display_lvname(lv));
|
||||
r = 0;
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
int reconfigure_mirror_images(struct lv_segment *mirrored_seg, uint32_t num_mirrors,
|
||||
struct dm_list *removable_pvs, unsigned remove_log)
|
||||
{
|
||||
int r;
|
||||
int in_sync;
|
||||
int log_policy, dev_policy;
|
||||
uint32_t old_num_mirrors = mirrored_seg->area_count;
|
||||
int had_log = (mirrored_seg->log_lv) ? 1 : 0;
|
||||
|
||||
/* was the mirror in-sync before problems? */
|
||||
in_sync = _mirrored_lv_in_sync(mirrored_seg->lv);
|
||||
|
||||
/*
|
||||
* While we are only removing devices, we can have sync set.
|
||||
* Setting this is only useful if we are moving to core log
|
||||
* otherwise the disk log will contain the sync information
|
||||
*/
|
||||
init_mirror_in_sync(in_sync);
|
||||
|
||||
r = _remove_mirror_images(mirrored_seg->lv, old_num_mirrors - num_mirrors,
|
||||
is_mirror_image_removable, removable_pvs,
|
||||
remove_log, 0, NULL, 0);
|
||||
if (!r)
|
||||
/* Unable to remove bad devices */
|
||||
return 0;
|
||||
|
||||
log_warn("WARNING: Bad device removed from mirror volume %s.",
|
||||
display_lvname(mirrored_seg->lv));
|
||||
|
||||
log_policy = _get_mirror_log_fault_policy(mirrored_seg->lv->vg->cmd);
|
||||
dev_policy = _get_mirror_device_fault_policy(mirrored_seg->lv->vg->cmd);
|
||||
|
||||
r = _replace_mirror_images(mirrored_seg,
|
||||
(dev_policy != MIRROR_REMOVE) ?
|
||||
old_num_mirrors : num_mirrors,
|
||||
log_policy, in_sync);
|
||||
|
||||
if (!r)
|
||||
/* Failed to replace device(s) */
|
||||
log_warn("WARNING: Unable to find substitute device for mirror volume %s.",
|
||||
display_lvname(mirrored_seg->lv));
|
||||
else if (r > 0)
|
||||
/* Success in replacing device(s) */
|
||||
log_warn("WARNING: Mirror volume %s restored - substitute for failed device found.",
|
||||
display_lvname(mirrored_seg->lv));
|
||||
else
|
||||
/* Bad device removed, but not replaced because of policy */
|
||||
if (mirrored_seg->area_count == 1) {
|
||||
log_warn("WARNING: Mirror volume %s converted to linear due to device failure.",
|
||||
display_lvname(mirrored_seg->lv);
|
||||
} else if (had_log && !mirrored_seg->log_lv) {
|
||||
log_warn("WARNING: Mirror volume %s disk log removed due to device failure.",
|
||||
display_lvname(mirrored_seg->lv));
|
||||
}
|
||||
/*
|
||||
* If we made it here, we at least removed the bad device.
|
||||
* Consider this success.
|
||||
*/
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int _create_mimage_lvs(struct alloc_handle *ah,
|
||||
uint32_t num_mirrors,
|
||||
uint32_t stripes,
|
||||
|
Loading…
x
Reference in New Issue
Block a user