Set the EXTENT_DATA_COMPRESSED flag together with EXTENT_ENCODED as
defined by fiemap spec.

Signed-off-by: David Sterba <[email protected]>
---
 fs/btrfs/extent_io.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 5ea0ef5..8a28f15 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -4158,6 +4158,7 @@ int extent_fiemap(struct inode *inode, struct 
fiemap_extent_info *fieinfo,
 
        while (!end) {
                u64 offset_in_extent = 0;
+               u64 em_phys_len;
 
                /* break if the extent we found is outside the range */
                if (em->start >= max || extent_map_end(em) < off)
@@ -4182,6 +4183,7 @@ int extent_fiemap(struct inode *inode, struct 
fiemap_extent_info *fieinfo,
                em_end = extent_map_end(em);
                em_len = em_end - em_start;
                emflags = em->flags;
+               em_phys_len = em->len;
                disko = 0;
                flags = 0;
 
@@ -4220,9 +4222,12 @@ int extent_fiemap(struct inode *inode, struct 
fiemap_extent_info *fieinfo,
 
                        if (ref_cnt > 1)
                                flags |= FIEMAP_EXTENT_SHARED;
+                       em_phys_len = em->block_len;
                }
-               if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags))
+               if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) {
                        flags |= FIEMAP_EXTENT_ENCODED;
+                       flags |= FIEMAP_EXTENT_DATA_COMPRESSED;
+               }
 
                free_extent_map(em);
                em = NULL;
@@ -4244,7 +4249,7 @@ int extent_fiemap(struct inode *inode, struct 
fiemap_extent_info *fieinfo,
                        end = 1;
                }
                ret = fiemap_fill_next_extent(fieinfo, em_start, disko,
-                                             em_len, 0, flags);
+                                             em_len, em_phys_len, flags);
                if (ret)
                        goto out_free;
        }
-- 
1.7.9

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to