public inbox for lvm2-cvs@sourceware.org
help / color / mirror / Atom feed
* LVM2/tools vgmerge.c
@ 2009-09-02 21:28 wysochanski
0 siblings, 0 replies; 5+ messages in thread
From: wysochanski @ 2009-09-02 21:28 UTC (permalink / raw)
To: lvm-devel, lvm2-cvs
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: wysochanski@sourceware.org 2009-09-02 21:28:27
Modified files:
tools : vgmerge.c
Log message:
Refactor vgmerge - combine _vgmerge_to and _vgmerge_from into _vgmerge_vg_read.
These functions are identical so should be no functional change.
Author: Dave Wysochanski <dwysocha@redhat.com>
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgmerge.c.diff?cvsroot=lvm2&r1=1.62&r2=1.63
--- LVM2/tools/vgmerge.c 2009/09/02 21:28:10 1.62
+++ LVM2/tools/vgmerge.c 2009/09/02 21:28:27 1.63
@@ -15,31 +15,17 @@
#include "tools.h"
-static struct volume_group *_vgmerge_from(struct cmd_context *cmd,
- const char *vg_name_from)
+static struct volume_group *_vgmerge_vg_read(struct cmd_context *cmd,
+ const char *vg_name)
{
- struct volume_group *vg_from;
- log_verbose("Checking for volume group \"%s\"", vg_name_from);
- vg_from = vg_read_for_update(cmd, vg_name_from, NULL, 0);
- if (vg_read_error(vg_from)) {
- vg_release(vg_from);
+ struct volume_group *vg;
+ log_verbose("Checking for volume group \"%s\"", vg_name);
+ vg = vg_read_for_update(cmd, vg_name, NULL, 0);
+ if (vg_read_error(vg)) {
+ vg_release(vg);
return NULL;
}
- return vg_from;
-}
-
-static struct volume_group *_vgmerge_to(struct cmd_context *cmd,
- const char *vg_name_to)
-{
- struct volume_group *vg_to;
-
- log_verbose("Checking for volume group \"%s\"", vg_name_to);
- vg_to = vg_read_for_update(cmd, vg_name_to, NULL, 0);
- if (vg_read_error(vg_to)) {
- vg_release(vg_to);
- return NULL;
- }
- return vg_to;
+ return vg;
}
static int _vgmerge_single(struct cmd_context *cmd, const char *vg_name_to,
@@ -55,11 +41,11 @@
return ECMD_FAILED;
}
- vg_to = _vgmerge_to(cmd, vg_name_to);
+ vg_to = _vgmerge_vg_read(cmd, vg_name_to);
if (!vg_to)
return ECMD_FAILED;
- vg_from = _vgmerge_from(cmd, vg_name_from);
+ vg_from = _vgmerge_vg_read(cmd, vg_name_from);
if (!vg_from) {
unlock_and_release_vg(cmd, vg_to, vg_name_to);
return ECMD_FAILED;
^ permalink raw reply [flat|nested] 5+ messages in thread
* LVM2/tools vgmerge.c
@ 2010-06-28 20:39 wysochanski
0 siblings, 0 replies; 5+ messages in thread
From: wysochanski @ 2010-06-28 20:39 UTC (permalink / raw)
To: lvm-devel, lvm2-cvs
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: wysochanski@sourceware.org 2010-06-28 20:39:08
Modified files:
tools : vgmerge.c
Log message:
Update _vgmerge_single() to move fid->metadata_areas_ignored.
When vgmerge is called we move the mdas from the source to the
destination. With metadata balancing we now have another mda
list, fid->metadata_areas_ignored, so move the mdas on this list
as well.
This patch should not matter as the code is written today. However
we include it for completeness in the case that _vgmerge_single()
is refactored and/or moved into a library function.
Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgmerge.c.diff?cvsroot=lvm2&r1=1.67&r2=1.68
--- LVM2/tools/vgmerge.c 2010/06/28 20:32:47 1.67
+++ LVM2/tools/vgmerge.c 2010/06/28 20:39:08 1.68
@@ -126,6 +126,12 @@
dm_list_move(&vg_to->fid->metadata_areas_in_use, mdah);
}
+ while (!dm_list_empty(&vg_from->fid->metadata_areas_ignored)) {
+ struct dm_list *mdah = vg_from->fid->metadata_areas_ignored.n;
+
+ dm_list_move(&vg_to->fid->metadata_areas_ignored, mdah);
+ }
+
vg_to->extent_count += vg_from->extent_count;
vg_to->free_count += vg_from->free_count;
^ permalink raw reply [flat|nested] 5+ messages in thread
* LVM2/tools vgmerge.c
@ 2009-09-02 21:28 wysochanski
0 siblings, 0 replies; 5+ messages in thread
From: wysochanski @ 2009-09-02 21:28 UTC (permalink / raw)
To: lvm-devel, lvm2-cvs
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: wysochanski@sourceware.org 2009-09-02 21:28:11
Modified files:
tools : vgmerge.c
Log message:
Refactor vgmerge - create _vgmerge_from and _vgmerge_to.
These functions are really identical but for clarity I made them separate
functions in this patch.
Should be no functional change.
Author: Dave Wysochanski <dwysocha@redhat.com>
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgmerge.c.diff?cvsroot=lvm2&r1=1.61&r2=1.62
--- LVM2/tools/vgmerge.c 2009/09/02 21:27:55 1.61
+++ LVM2/tools/vgmerge.c 2009/09/02 21:28:10 1.62
@@ -15,6 +15,33 @@
#include "tools.h"
+static struct volume_group *_vgmerge_from(struct cmd_context *cmd,
+ const char *vg_name_from)
+{
+ struct volume_group *vg_from;
+ log_verbose("Checking for volume group \"%s\"", vg_name_from);
+ vg_from = vg_read_for_update(cmd, vg_name_from, NULL, 0);
+ if (vg_read_error(vg_from)) {
+ vg_release(vg_from);
+ return NULL;
+ }
+ return vg_from;
+}
+
+static struct volume_group *_vgmerge_to(struct cmd_context *cmd,
+ const char *vg_name_to)
+{
+ struct volume_group *vg_to;
+
+ log_verbose("Checking for volume group \"%s\"", vg_name_to);
+ vg_to = vg_read_for_update(cmd, vg_name_to, NULL, 0);
+ if (vg_read_error(vg_to)) {
+ vg_release(vg_to);
+ return NULL;
+ }
+ return vg_to;
+}
+
static int _vgmerge_single(struct cmd_context *cmd, const char *vg_name_to,
const char *vg_name_from)
{
@@ -28,17 +55,12 @@
return ECMD_FAILED;
}
- log_verbose("Checking for volume group \"%s\"", vg_name_to);
- vg_to = vg_read_for_update(cmd, vg_name_to, NULL, 0);
- if (vg_read_error(vg_to)) {
- vg_release(vg_to);
+ vg_to = _vgmerge_to(cmd, vg_name_to);
+ if (!vg_to)
return ECMD_FAILED;
- }
- log_verbose("Checking for volume group \"%s\"", vg_name_from);
- vg_from = vg_read_for_update(cmd, vg_name_from, NULL, 0);
- if (vg_read_error(vg_from)) {
- vg_release(vg_from);
+ vg_from = _vgmerge_from(cmd, vg_name_from);
+ if (!vg_from) {
unlock_and_release_vg(cmd, vg_to, vg_name_to);
return ECMD_FAILED;
}
^ permalink raw reply [flat|nested] 5+ messages in thread
* LVM2/tools vgmerge.c
@ 2009-09-02 21:28 wysochanski
0 siblings, 0 replies; 5+ messages in thread
From: wysochanski @ 2009-09-02 21:28 UTC (permalink / raw)
To: lvm-devel, lvm2-cvs
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: wysochanski@sourceware.org 2009-09-02 21:28:44
Modified files:
tools : vgmerge.c
Log message:
Change vgmerge behavior to open/lock first vg based on alphabetical ordering.
This enforces our alphabetical lock ordering rules for vgmerge.
Author: Dave Wysochanski <dwysocha@redhat.com>
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgmerge.c.diff?cvsroot=lvm2&r1=1.63&r2=1.64
--- LVM2/tools/vgmerge.c 2009/09/02 21:28:27 1.63
+++ LVM2/tools/vgmerge.c 2009/09/02 21:28:43 1.64
@@ -41,14 +41,28 @@
return ECMD_FAILED;
}
- vg_to = _vgmerge_vg_read(cmd, vg_name_to);
- if (!vg_to)
- return ECMD_FAILED;
+ if (strcmp(vg_name_to, vg_name_from) > 0)
+ lock_vg_from_first = 1;
- vg_from = _vgmerge_vg_read(cmd, vg_name_from);
- if (!vg_from) {
- unlock_and_release_vg(cmd, vg_to, vg_name_to);
- return ECMD_FAILED;
+ if (lock_vg_from_first) {
+ vg_from = _vgmerge_vg_read(cmd, vg_name_from);
+ if (!vg_from)
+ return ECMD_FAILED;
+ vg_to = _vgmerge_vg_read(cmd, vg_name_to);
+ if (!vg_to) {
+ unlock_and_release_vg(cmd, vg_from, vg_name_from);
+ return ECMD_FAILED;
+ }
+ } else {
+ vg_to = _vgmerge_vg_read(cmd, vg_name_to);
+ if (!vg_to)
+ return ECMD_FAILED;
+
+ vg_from = _vgmerge_vg_read(cmd, vg_name_from);
+ if (!vg_from) {
+ unlock_and_release_vg(cmd, vg_to, vg_name_to);
+ return ECMD_FAILED;
+ }
}
if (!vgs_are_compatible(cmd, vg_from, vg_to))
^ permalink raw reply [flat|nested] 5+ messages in thread
* LVM2/tools vgmerge.c
@ 2009-09-02 21:27 wysochanski
0 siblings, 0 replies; 5+ messages in thread
From: wysochanski @ 2009-09-02 21:27 UTC (permalink / raw)
To: lvm-devel, lvm2-cvs
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: wysochanski@sourceware.org 2009-09-02 21:27:55
Modified files:
tools : vgmerge.c
Log message:
Refactor vgmerge - introduce lock_vg_from_first flag.
Should be no functional change.
Author: Dave Wysochanski <dwysocha@redhat.com>
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgmerge.c.diff?cvsroot=lvm2&r1=1.60&r2=1.61
--- LVM2/tools/vgmerge.c 2009/07/08 14:33:17 1.60
+++ LVM2/tools/vgmerge.c 2009/09/02 21:27:55 1.61
@@ -21,6 +21,7 @@
struct volume_group *vg_to, *vg_from;
struct lv_list *lvl1, *lvl2;
int r = ECMD_FAILED;
+ int lock_vg_from_first = 0;
if (!strcmp(vg_name_to, vg_name_from)) {
log_error("Duplicate volume group name \"%s\"", vg_name_from);
@@ -116,8 +117,13 @@
vg_from->name, vg_to->name);
r = ECMD_PROCESSED;
bad:
- unlock_and_release_vg(cmd, vg_from, vg_name_from);
- unlock_and_release_vg(cmd, vg_to, vg_name_to);
+ if (lock_vg_from_first) {
+ unlock_and_release_vg(cmd, vg_to, vg_name_to);
+ unlock_and_release_vg(cmd, vg_from, vg_name_from);
+ } else {
+ unlock_and_release_vg(cmd, vg_from, vg_name_from);
+ unlock_and_release_vg(cmd, vg_to, vg_name_to);
+ }
return r;
}
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-06-28 20:39 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-09-02 21:28 LVM2/tools vgmerge.c wysochanski
-- strict thread matches above, loose matches on Subject: below --
2010-06-28 20:39 wysochanski
2009-09-02 21:28 wysochanski
2009-09-02 21:28 wysochanski
2009-09-02 21:27 wysochanski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).