summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/extent_io.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2013-08-19 13:49:20 +1000
committerDave Airlie <airlied@redhat.com>2013-08-19 13:49:20 +1000
commit3387ed83943daf6cb1bb4195ae369067b9cd80ce (patch)
treee9fc247ed3a26f5369a7ec1b1bd0ef66bda7b4dd /fs/btrfs/extent_io.c
parenteb91626ac4b9af3d5602a7db888b8bc4cb23eb3b (diff)
parent63b66e5ba54b15a6592be00555d762db6db739ce (diff)
downloadblackbird-op-linux-3387ed83943daf6cb1bb4195ae369067b9cd80ce.tar.gz
blackbird-op-linux-3387ed83943daf6cb1bb4195ae369067b9cd80ce.zip
Merge tag 'drm-intel-fixes-2013-08-15' of git://people.freedesktop.org/~danvet/drm-intel
* tag 'drm-intel-fixes-2013-08-15' of git://people.freedesktop.org/~danvet/drm-intel: (153 commits) drm/i915: Don't deref pipe->cpu_transcoder in the hangcheck code
Diffstat (limited to 'fs/btrfs/extent_io.c')
-rw-r--r--fs/btrfs/extent_io.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 583d98bd065e..fe443fece851 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -4048,7 +4048,7 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
}
while (!end) {
- u64 offset_in_extent;
+ u64 offset_in_extent = 0;
/* break if the extent we found is outside the range */
if (em->start >= max || extent_map_end(em) < off)
@@ -4064,9 +4064,12 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
/*
* record the offset from the start of the extent
- * for adjusting the disk offset below
+ * for adjusting the disk offset below. Only do this if the
+ * extent isn't compressed since our in ram offset may be past
+ * what we have actually allocated on disk.
*/
- offset_in_extent = em_start - em->start;
+ if (!test_bit(EXTENT_FLAG_COMPRESSED, &em->flags))
+ offset_in_extent = em_start - em->start;
em_end = extent_map_end(em);
em_len = em_end - em_start;
emflags = em->flags;
OpenPOWER on IntegriCloud