]> sourceware.org Git - lvm2.git/commitdiff
Allow only orphan PVs to be resized even with two metadata areas.
authorPeter Rajnoha <prajnoha@redhat.com>
Fri, 25 Feb 2011 14:08:54 +0000 (14:08 +0000)
committerPeter Rajnoha <prajnoha@redhat.com>
Fri, 25 Feb 2011 14:08:54 +0000 (14:08 +0000)
WHATS_NEW
lib/format_text/format-text.c
lib/metadata/metadata.c

index 55e379f398539d2cbf31f3062c53ebda4919fabc..00711c13752ecff7f119fa5ca7a23a0993385bad 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -2,7 +2,7 @@ Version 2.02.85 -
 ===================================
   Fix metadata balance code to work with recent changes in metadata handling.
   Add old_uuid field to physical_volume and fix pvchange -u for recent changes.
-  Allow pvresize on a PV with two metadata areas.
+  Allow pvresize on a PV with two metadata areas (for PVs not in a VG).
   Change pvcreate to use new metadata handling interface.
   Restructure existing pv_setup and pv_write fn, add pv_initialise fn.
   Add internal interface to support adding and removing metadata areas.
index 78f9ff9f9beed72fbe4a021b7af3f9ad4897df27..703477c1508d8097333212c713d7c74290533fd0 100644 (file)
@@ -2161,6 +2161,17 @@ static int _text_pv_resize(const struct format_type *fmt,
        /* If there's an mda at the end, move it to a new position. */
        if ((mda = fid_get_mda_indexed(fid, pvid, ID_LEN, 1)) &&
            (mdac = mda->metadata_locn)) {
+               /*
+                * FIXME: Remove this restriction - we need to
+                *        allow writing PV labels on non-orphan VGs
+                *        for this to work correctly.
+                */
+               if (vg) {
+                       log_error("Resizing a PV with two metadata areas "
+                                 "that is part of a VG is not supported.");
+                       return 0;
+               }
+
                /* FIXME: Maybe MDA0 size would be better? */
                mda_size = mdac->area.size >> SECTOR_SHIFT;
                mda_ignored = mda_is_ignored(mda);
index 44c3e2f20b27e4da0c9ea9227d00d1927be03955..4aa0c31ffc0917a498c187c782c79a54fbc7131a 100644 (file)
@@ -3543,6 +3543,12 @@ int pv_write(struct cmd_context *cmd __attribute__((unused)),
                return 0;
        }
 
+       /*
+        * FIXME: Try to remove this restriction. This requires checking
+        *        that the PV and the VG are in a consistent state. We need
+        *        to provide some revert mechanism since PV label together
+        *        with VG metadata write is not atomic.
+        */
        if (!is_orphan_vg(pv->vg_name) || pv->pe_alloc_count) {
                log_error("Assertion failed: can't _pv_write non-orphan PV "
                          "(in VG %s)", pv->vg_name);
This page took 0.050022 seconds and 5 git commands to generate.