summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Kozina <okozina@redhat.com>2015-05-19 11:37:39 +0200
committerOndrej Kozina <okozina@redhat.com>2015-05-19 20:55:22 +0200
commite5e0e220223edf0789d38a0a98341d745cf95b15 (patch)
treed045b5c8ddf45b54536c7e2ab3e8a1f2d4876c93
parente27182249a2cef2518fbbab1037810ed5c9a6d37 (diff)
downloadlvm2-e5e0e220223edf0789d38a0a98341d745cf95b15.tar.gz
polldaemon: move dev_close_all out of poll_get_copy_vg
let's call dev_close_all() only before we're about to 'sleep' for at least one second during the polling. (it's questionable whether to call dev_close_all() at all in polldaemon code. Natural extension would be to drop it completely)
-rw-r--r--tools/polldaemon.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/tools/polldaemon.c b/tools/polldaemon.c
index 83497b07b..7f2588754 100644
--- a/tools/polldaemon.c
+++ b/tools/polldaemon.c
@@ -59,8 +59,6 @@ struct volume_group *poll_get_copy_vg(struct cmd_context *cmd,
const char *uuid __attribute__((unused)),
uint32_t flags)
{
- dev_close_all();
-
if (name && !strchr(name, '/'))
return vg_read(cmd, name, NULL, flags);
@@ -153,6 +151,7 @@ static void _nanosleep(unsigned secs, unsigned allow_zero_time)
static void _sleep_and_rescan_devices(struct daemon_parms *parms)
{
if (parms->interval && !parms->aborting) {
+ dev_close_all();
_nanosleep(parms->interval, 1);
/* Devices might have changed while we slept */
init_full_scan_done(0);
@@ -362,6 +361,8 @@ static void _poll_for_all_vgs(struct cmd_context *cmd,
process_each_vg(cmd, 0, NULL, READ_FOR_UPDATE, handle, _poll_vg);
if (!parms->outstanding_count)
break;
+ if (parms->interval)
+ dev_close_all();
_nanosleep(parms->interval, 1);
}
}
@@ -487,6 +488,9 @@ static void _lvmpolld_poll_for_all_vgs(struct cmd_context *cmd,
report_progress(cmd, idl->id, lpdp.parms);
}
+ if (lpdp.parms->interval)
+ dev_close_all();
+
_nanosleep(lpdp.parms->interval, 0);
}
@@ -513,6 +517,9 @@ static int _lvmpoll_daemon(struct cmd_context *cmd, struct poll_operation_id *id
(!parms->aborting && !(r = report_progress(cmd, id, parms))))
break;
+ if (parms->interval)
+ dev_close_all();
+
_nanosleep(parms->interval, 0);
}
}