1
0
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:
Alasdair Kergon 2008-07-31 12:38:31 +00:00
parent 9db22babaf
commit 8a29df0a6c
2 changed files with 24 additions and 2 deletions

View File

@ -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.

View File

@ -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;