diff options
author | Heinz Mauelshagen <heinzm@redhat.com> | 2017-03-09 20:41:07 +0100 |
---|---|---|
committer | Heinz Mauelshagen <heinzm@redhat.com> | 2017-03-09 20:41:07 +0100 |
commit | 76f6951c3e8f0933df9730a42e9c46f273d1da24 (patch) | |
tree | 3210ebbc793fc398375a1e89adba60e47e9c52ca /daemons/dmeventd/plugins | |
parent | 67ddc0c29289c454fbe6203473790bbcd12e3619 (diff) | |
download | lvm2-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.c | 5 |
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; |