1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

monitoring: sync /dev content before contacting dmeventd for monitor/unmonitor

dmeventd daemon may call further code itself that looks at /dev, e.g.
via dmeventd_lvm2_command call. We need to have a consistent view of
the /dev content at that time. Therefore, sync /dev content before
calling monitoring hook which contacts dmeventd.

This problem was quite hidden before, but now it has manifested itself
because of recent additions to dev-cache code where we started looking
at device holders as seen in sysfs. What happened here was that the
device was already in sysfs, but not yet under /dev and this triggered
the new error message sometimes:

  log_error("%s: failed to find associated device structure for holder %s.", devname, devpath);

This problem has manifested recently in our api/pytest.sh test from
testsuite where we create thin pool LVs and thin LVs and hence it also
causes dmeventd to be used as well and these error messages were
visible there.
This commit is contained in:
Peter Rajnoha 2016-03-24 11:13:21 +01:00
parent 82d92009ae
commit 6129d2e64d

View File

@ -1746,6 +1746,12 @@ int monitor_dev_for_events(struct cmd_context *cmd, const struct logical_volume
if (test_mode()) if (test_mode())
continue; continue;
/*
* Sync all queued device names/symlinks so dmeventd
* has consistent view during possible device scan.
*/
fs_unlock();
/* FIXME specify events */ /* FIXME specify events */
if (!monitor_fn(seg, 0)) { if (!monitor_fn(seg, 0)) {
log_error("%s: %s segment monitoring function failed.", log_error("%s: %s segment monitoring function failed.",