Set the EXTENT_DATA_COMPRESSED flag together with EXTENT_ENCODED as defined by fiemap spec. Signed-off-by: David Sterba <dsterba@xxxxxxx> --- fs/btrfs/extent_io.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index eec118bf77ae..12e565cf6cef 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@ -4272,6 +4272,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) @@ -4295,6 +4296,7 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, offset_in_extent = em_start - em->start; em_end = extent_map_end(em); em_len = em_end - em_start; + em_phys_len = em->len; disko = 0; flags = 0; @@ -4333,9 +4335,11 @@ 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)) - flags |= FIEMAP_EXTENT_ENCODED; + flags |= FIEMAP_EXTENT_ENCODED | + FIEMAP_EXTENT_DATA_COMPRESSED; free_extent_map(em); em = NULL; @@ -4357,7 +4361,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, em_len, flags); + em_len, em_phys_len, flags); if (ret) goto out_free; } -- 1.8.4.5 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html