summaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_bmap.c
diff options
context:
space:
mode:
authorRobert Richter <robert.richter@amd.com>2010-10-11 19:26:50 +0200
committerRobert Richter <robert.richter@amd.com>2010-10-11 19:26:50 +0200
commitad0f7cfaa85fc033523a09ab1f3dd6b8ded3dff5 (patch)
tree2565121e4b9945d953e02c77a2e53065b3789aa4 /fs/xfs/xfs_bmap.c
parent86c8c04792f152c5469023885510140dd34817bc (diff)
parentc7a27aa4652c63172489a73f3961455650a79a7f (diff)
downloadlinux-ad0f7cfaa85fc033523a09ab1f3dd6b8ded3dff5.tar.gz
linux-ad0f7cfaa85fc033523a09ab1f3dd6b8ded3dff5.tar.bz2
linux-ad0f7cfaa85fc033523a09ab1f3dd6b8ded3dff5.zip
Merge branch 'oprofile/urgent' (early part) into oprofile/perf
Diffstat (limited to 'fs/xfs/xfs_bmap.c')
-rw-r--r--fs/xfs/xfs_bmap.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c
index 23f14e595c18..f90dadd5a968 100644
--- a/fs/xfs/xfs_bmap.c
+++ b/fs/xfs/xfs_bmap.c
@@ -5533,12 +5533,24 @@ xfs_getbmap(
map[i].br_startblock))
goto out_free_map;
- nexleft--;
bmv->bmv_offset =
out[cur_ext].bmv_offset +
out[cur_ext].bmv_length;
bmv->bmv_length =
max_t(__int64_t, 0, bmvend - bmv->bmv_offset);
+
+ /*
+ * In case we don't want to return the hole,
+ * don't increase cur_ext so that we can reuse
+ * it in the next loop.
+ */
+ if ((iflags & BMV_IF_NO_HOLES) &&
+ map[i].br_startblock == HOLESTARTBLOCK) {
+ memset(&out[cur_ext], 0, sizeof(out[cur_ext]));
+ continue;
+ }
+
+ nexleft--;
bmv->bmv_entries++;
cur_ext++;
}