[lvm-devel] master - raid: more origin_only updates
Zdenek Kabelac
zkabelac at sourceware.org
Wed Jun 21 10:36:46 UTC 2017
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=49fa2bea1c82c4763fb87785683040fc0fe093d7
Commit: 49fa2bea1c82c4763fb87785683040fc0fe093d7
Parent: 1766eaec4b65a3e6d0cd54bca5ed11d73f675d90
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Wed Jun 21 11:17:03 2017 +0200
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Wed Jun 21 12:35:16 2017 +0200
raid: more origin_only updates
Seems the code is multiplied - so keep it consistent for now.
TODO: drop all uneeded code
---
lib/metadata/raid_manip.c | 17 +++++++++++++++--
1 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c
index 290dec7..d3bbb60 100644
--- a/lib/metadata/raid_manip.c
+++ b/lib/metadata/raid_manip.c
@@ -650,6 +650,12 @@ static int _lv_update_and_reload_list(struct logical_volume *lv, int origin_only
struct lv_list *lvl;
int r;
+ if (lock_lv != lv) {
+ log_debug_activation("Dropping origin_only for %s as lock holds %s",
+ display_lvname(lv), display_lvname(lock_lv));
+ origin_only = 0;
+ }
+
log_very_verbose("Updating logical volume %s on disk(s)%s.",
display_lvname(lock_lv), origin_only ? " (origin only)": "");
@@ -2112,15 +2118,22 @@ static int _vg_write_lv_suspend_commit_backup(struct volume_group *vg,
struct logical_volume *lv,
int origin_only, int do_backup)
{
+ const struct logical_volume *lock_lv = lv_lock_holder(lv);
int r = 1;
+ if (lock_lv != lv) {
+ log_debug_activation("Dropping origin_only for %s as lock holds %s",
+ display_lvname(lv), display_lvname(lock_lv));
+ origin_only = 0;
+ }
+
if (!vg_write(vg)) {
log_error("Write of VG %s failed.", vg->name);
return_0;
}
- if (lv && !(r = (origin_only ? suspend_lv_origin(vg->cmd, lv_lock_holder(lv)) :
- suspend_lv(vg->cmd, lv_lock_holder(lv))))) {
+ if (lv && !(r = (origin_only ? suspend_lv_origin(vg->cmd, lock_lv) :
+ suspend_lv(vg->cmd, lock_lv)))) {
log_error("Failed to suspend %s before committing changes.",
display_lvname(lv));
vg_revert(lv->vg);
More information about the lvm-devel
mailing list