mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
fix pvremove for pvs without mdas
This commit is contained in:
parent
9db22babaf
commit
8a29df0a6c
@ -1,6 +1,6 @@
|
||||
Version 2.02.40 -
|
||||
================================
|
||||
Fix pvchange to handle PVs without mdas.
|
||||
Fix pvchange and pvremove to handle PVs without mdas.
|
||||
Refactor _text_pv_read and always return mda list if requested.
|
||||
Fix configure to work w/o readline unless --enable-readline used. (2.02.39)
|
||||
Remove is_lvm_partition template which has not yet been coded.
|
||||
|
@ -25,18 +25,40 @@ const char _really_wipe[] =
|
||||
static int pvremove_check(struct cmd_context *cmd, const char *name)
|
||||
{
|
||||
struct physical_volume *pv;
|
||||
struct list mdas;
|
||||
|
||||
list_init(&mdas);
|
||||
|
||||
/* FIXME Check partition type is LVM unless --force is given */
|
||||
|
||||
/* Is there a pv here already? */
|
||||
/* If not, this is an error unless you used -f. */
|
||||
if (!(pv = pv_read(cmd, name, NULL, NULL, 1))) {
|
||||
if (!(pv = pv_read(cmd, name, &mdas, NULL, 1))) {
|
||||
if (arg_count(cmd, force_ARG))
|
||||
return 1;
|
||||
log_error("Physical Volume %s not found", name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* If a PV has no MDAs it may appear to be an
|
||||
* orphan until the metadata is read off
|
||||
* another PV in the same VG. Detecting this
|
||||
* means checking every VG by scanning every
|
||||
* PV on the system.
|
||||
*/
|
||||
if (is_orphan(pv) && !list_size(&mdas)) {
|
||||
if (!scan_vgs_for_pvs(cmd)) {
|
||||
log_error("Rescan for PVs without metadata areas "
|
||||
"failed.");
|
||||
return 0;
|
||||
}
|
||||
if (!(pv = pv_read(cmd, name, NULL, NULL, 1))) {
|
||||
log_error("Failed to read physical volume %s", name);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* orphan ? */
|
||||
if (is_orphan(pv))
|
||||
return 1;
|
||||
|
Loading…
Reference in New Issue
Block a user