[lvm-devel] LVM2 ./VERSION ./WHATS_NEW daemons/clvmd/lvm-f ...
agk at sourceware.org
agk at sourceware.org
Fri Sep 19 15:44:08 UTC 2008
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: agk at sourceware.org 2008-09-19 15:44:03
Modified files:
. : VERSION WHATS_NEW
daemons/clvmd : lvm-functions.c
tools : vgreduce.c
Log message:
fix last release
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.181&r2=1.182
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.962&r2=1.963
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/daemons/clvmd/lvm-functions.c.diff?cvsroot=lvm2&r1=1.45&r2=1.46
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgreduce.c.diff?cvsroot=lvm2&r1=1.83&r2=1.84
--- LVM2/VERSION 2008/09/19 06:48:48 1.181
+++ LVM2/VERSION 2008/09/19 15:44:03 1.182
@@ -1 +1 @@
-2.02.40-cvs (2008-09-18)
+2.02.41-cvs (2008-09-19)
--- LVM2/WHATS_NEW 2008/09/19 06:48:48 1.962
+++ LVM2/WHATS_NEW 2008/09/19 15:44:03 1.963
@@ -1,3 +1,6 @@
+Version 2.02.41 -
+=====================================
+
Version 2.02.40 - 19th September 2008
=====================================
Allow lvremove to remove LVs from VGs with missing PVs.
--- LVM2/daemons/clvmd/lvm-functions.c 2008/09/19 06:41:57 1.45
+++ LVM2/daemons/clvmd/lvm-functions.c 2008/09/19 15:44:03 1.46
@@ -141,8 +141,7 @@
{
static char buf[128];
- sprintf(buf, "0x%x (%s%s%s)", flags,
- flags & LCK_PARTIAL_MODE ? "PARTIAL " : "",
+ sprintf(buf, "0x%x (%s%s)", flags,
flags & LCK_MIRROR_NOSYNC_MODE ? "MIRROR_NOSYNC " : "",
flags & LCK_DMEVENTD_MONITOR_MODE ? "DMEVENTD_MONITOR " : "");
--- LVM2/tools/vgreduce.c 2008/09/19 06:42:00 1.83
+++ LVM2/tools/vgreduce.c 2008/09/19 15:44:03 1.84
@@ -163,7 +163,9 @@
static int _make_vg_consistent(struct cmd_context *cmd, struct volume_group *vg)
{
+ struct list *pvh, *pvht;
struct list *lvh, *lvht;
+ struct pv_list *pvl;
struct lv_list *lvl, *lvl2, *lvlt;
struct logical_volume *lv;
struct physical_volume *pv;
@@ -190,7 +192,8 @@
/* FIXME Also check for segs on deleted LVs (incl pvmove) */
pv = seg_pv(seg, s);
- if (!pv || !pv_dev(pv)) {
+ if (!pv || !pv_dev(pv) ||
+ (pv->status & MISSING_PV)) {
if (arg_count(cmd, mirrorsonly_ARG) &&
!(lv->status & MIRROR_IMAGE)) {
log_error("Non-mirror-image LV %s found: can't remove.", lv->name);
@@ -211,8 +214,21 @@
return 0;
}
- if (!_consolidate_vg(cmd, vg))
- return_0;
+ /*
+ * Remove missing PVs. FIXME: This duplicates _consolidate_vg above,
+ * but we cannot use that right now, since the LV removal code in this
+ * function leaves the VG in a "somewhat inconsistent" state and
+ * _consolidate_vg doesn't like that -- specifically, mirrors are fixed
+ * up *after* the PVs are removed. All this should be gradually
+ * superseded by lvconvert --repair.
+ */
+ list_iterate_safe(pvh, pvht, &vg->pvs) {
+ pvl = list_item(pvh, struct pv_list);
+ if (pvl->pv->dev)
+ continue;
+ if (!_remove_pv(vg, pvl, 0))
+ return_0;
+ }
/* FIXME Recovery. For now people must clean up by hand. */
More information about the lvm-devel
mailing list