mirror of
git://sourceware.org/git/lvm2.git
synced 2025-02-08 09:57:55 +03:00
lv_manip: improve should_wipe reporting
We want to print smarter warning message only when the zeroing was not provided on the first zeroable segment of newly created LV. Put warning within _should_wipe_lv function to avoid reevaluation of same conditions twice.
This commit is contained in:
parent
2fc403b0fc
commit
be3f666ef3
@ -1,5 +1,6 @@
|
|||||||
Version 2.02.112 -
|
Version 2.02.112 -
|
||||||
=====================================
|
=====================================
|
||||||
|
Improve _should_wipe_lv() to warn with message.
|
||||||
Inform about temporarily created volumes only in verbose mode.
|
Inform about temporarily created volumes only in verbose mode.
|
||||||
Better support for --test mode with pool creation.
|
Better support for --test mode with pool creation.
|
||||||
Query lock holding LV when replacing and converting raid volumes.
|
Query lock holding LV when replacing and converting raid volumes.
|
||||||
|
@ -6530,14 +6530,31 @@ int lv_activation_skip(struct logical_volume *lv, activation_change_t activate,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _should_wipe_lv(struct lvcreate_params *lp, struct logical_volume *lv) {
|
static int _should_wipe_lv(struct lvcreate_params *lp,
|
||||||
int r = lp->zero | lp->wipe_signatures;
|
struct logical_volume *lv, int warn)
|
||||||
|
{
|
||||||
|
/* Unzeroable segment */
|
||||||
|
if (first_seg(lv)->segtype->flags & SEG_CANNOT_BE_ZEROED)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (!seg_is_thin(lp) && !seg_is_cache_pool(lp))
|
/* Thin snapshot need not to be zeroed */
|
||||||
return r;
|
/* Thin pool with zeroing doesn't need zeroing or wiping */
|
||||||
|
if (lv_is_thin_volume(lv) &&
|
||||||
|
(first_seg(lv)->origin ||
|
||||||
|
first_seg(first_seg(lv)->pool_lv)->zero_new_blocks))
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (lv_is_thin_volume(lv))
|
/* Cannot zero read-only volume */
|
||||||
return r && !lp->snapshot && !first_seg(first_seg(lv)->pool_lv)->zero_new_blocks;
|
if ((lv->status & LVM_WRITE) &&
|
||||||
|
(lp->zero || lp->wipe_signatures))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
if (warn && (!lp->zero || !(lv->status & LVM_WRITE)))
|
||||||
|
log_warn("WARNING: Logical volume %s not zeroed.",
|
||||||
|
display_lvname(lv));
|
||||||
|
if (warn && (!lp->wipe_signatures || !(lv->status & LVM_WRITE)))
|
||||||
|
log_verbose("Signature wiping on logical volume %s not requested.",
|
||||||
|
display_lvname(lv));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -7017,7 +7034,7 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Do not scan this LV until properly zeroed/wiped. */
|
/* Do not scan this LV until properly zeroed/wiped. */
|
||||||
if (_should_wipe_lv(lp, lv))
|
if (_should_wipe_lv(lp, lv, 0))
|
||||||
lv->status |= LV_NOSCAN;
|
lv->status |= LV_NOSCAN;
|
||||||
|
|
||||||
if (lp->temporary)
|
if (lp->temporary)
|
||||||
@ -7073,14 +7090,7 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!seg_is_thin(lp) && !lp->snapshot) {
|
if (_should_wipe_lv(lp, lv, 1)) {
|
||||||
if (!lp->zero)
|
|
||||||
log_warn("WARNING: \"%s/%s\" not zeroed", lv->vg->name, lv->name);
|
|
||||||
if (!lp->wipe_signatures)
|
|
||||||
log_verbose("Signature wiping on \"%s/%s\" not requested", lv->vg->name, lv->name);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_should_wipe_lv(lp, lv)) {
|
|
||||||
if (!wipe_lv(lv, (struct wipe_params)
|
if (!wipe_lv(lv, (struct wipe_params)
|
||||||
{
|
{
|
||||||
.do_zero = lp->zero,
|
.do_zero = lp->zero,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user