summaryrefslogtreecommitdiff
path: root/daemons/dmeventd/plugins
diff options
context:
space:
mode:
authorHeinz Mauelshagen <heinzm@redhat.com>2017-03-09 20:41:07 +0100
committerHeinz Mauelshagen <heinzm@redhat.com>2017-03-09 20:41:07 +0100
commit76f6951c3e8f0933df9730a42e9c46f273d1da24 (patch)
tree3210ebbc793fc398375a1e89adba60e47e9c52ca /daemons/dmeventd/plugins
parent67ddc0c29289c454fbe6203473790bbcd12e3619 (diff)
downloadlvm2-76f6951c3e8f0933df9730a42e9c46f273d1da24.tar.gz
dmeventd: (workaround) fix mirror DSO to work with lvmetad
Automatic dmeventd repair of mirrors with active lvmetad configured (mirror_image_fault_policy = "allocate") fails because the lvscan run before the repair in the mirror DSO does not update the lvmetad cache properly thus "lvconvert --repair ..." fails. Need to scan the mirror LV before and after the repair to have proper cache content after the repair finished. The cache can't be relied on or the repair will fail. Resolves: rhbz1380521
Diffstat (limited to 'daemons/dmeventd/plugins')
-rw-r--r--daemons/dmeventd/plugins/mirror/dmeventd_mirror.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/daemons/dmeventd/plugins/mirror/dmeventd_mirror.c b/daemons/dmeventd/plugins/mirror/dmeventd_mirror.c
index 4ec348f5a..181b8398b 100644
--- a/daemons/dmeventd/plugins/mirror/dmeventd_mirror.c
+++ b/daemons/dmeventd/plugins/mirror/dmeventd_mirror.c
@@ -111,6 +111,9 @@ static int _remove_failed_devices(const char *cmd_lvscan, const char *cmd_lvconv
return 0;
}
+ if (!dmeventd_lvm2_run_with_lock(cmd_lvscan))
+ log_warn("WARNING: Re-scan of mirrored device %s failed.", device);
+
log_info("Repair of mirrored device %s finished successfully.", device);
return 1;
@@ -188,7 +191,7 @@ int register_device(const char *device,
goto_bad;
if (!dmeventd_lvm2_command(state->mem, state->cmd_lvconvert, sizeof(state->cmd_lvconvert),
- "lvconvert --repair --use-policies", device))
+ "lvconvert --config global{use_lvmetad = 0}' --repair --use-policies", device))
goto_bad;
*user = state;