summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryn M. Reeves <bmr@redhat.com>2017-06-07 19:29:16 +0100
committerBryn M. Reeves <bmr@redhat.com>2017-06-07 19:41:54 +0100
commit261b1e54e437f9e229d7da613094051ab2772025 (patch)
treed7e624d96fdf4165c909a293414acb65aeab8e4c
parent08658195b9cd2e9d87cb009394094f93ae7a6659 (diff)
downloadlvm2-dev-bmr-dmfilemapd-truncated.tar.gz
dmfilemapd: do not wait if file has been truncateddev-bmr-dmfilemapd-truncated
-rw-r--r--daemons/dmfilemapd/dmfilemapd.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/daemons/dmfilemapd/dmfilemapd.c b/daemons/dmfilemapd/dmfilemapd.c
index 0dbdefc5b..43ae9705c 100644
--- a/daemons/dmfilemapd/dmfilemapd.c
+++ b/daemons/dmfilemapd/dmfilemapd.c
@@ -686,7 +686,10 @@ static int _update_regions(struct dm_stats *dms, struct filemap_monitor *fm)
for (region = regions; *region != DM_STATS_REGIONS_ALL; region++)
nr_regions++;
- if (regions[0] != fm->group_id) {
+ if (!nr_regions)
+ log_warn("File contains no extents: exiting.");
+
+ if (nr_regions && (regions[0] != fm->group_id)) {
log_warn("group_id changed from " FMTu64 " to " FMTu64,
fm->group_id, regions[0]);
fm->group_id = regions[0];
@@ -753,17 +756,16 @@ static int _dmfilemapd(struct filemap_monitor *fm)
if ((check = _filemap_fd_check_changed(fm)) < 0)
goto bad;
- if (!check)
- goto wait;
-
- if (!_update_regions(dms, fm))
+ if (check && !_update_regions(dms, fm))
goto bad;
+ running = !!fm->nr_regions;
+ if (!running)
+ continue;
+
wait:
_filemap_monitor_wait(FILEMAPD_WAIT_USECS);
- running = !!fm->nr_regions;
-
/* mode=inode termination condions */
if (fm->mode == DM_FILEMAPD_FOLLOW_INODE) {
if (!_filemap_monitor_check_file_unlinked(fm))