From: Liu Bo Date: Tue, 25 Nov 2014 09:35:52 +0000 (+0800) Subject: Btrfs-progs: fix a bug of converting sparse ext2/3/4 X-Git-Tag: upstream/4.16.1~2592 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ad96e8f4d656b6b46253b2122a96d5e9c4a17b18;p=platform%2Fupstream%2Fbtrfs-progs.git Btrfs-progs: fix a bug of converting sparse ext2/3/4 When converting a sparse ext* filesystem, btrfs-convert adds checksum extents for empty extents, whose disk_bytenr = 0, and this can end up with some weird problems, one of them is the failure of reading free space cache inode on mounting converted btrfs. The fix is simple, just to skip making checksum on empty extents. Signed-off-by: Liu Bo Signed-off-by: David Sterba --- diff --git a/btrfs-convert.c b/btrfs-convert.c index a544fc6..02c5e94 100644 --- a/btrfs-convert.c +++ b/btrfs-convert.c @@ -393,7 +393,7 @@ static int record_file_blocks(struct btrfs_trans_handle *trans, ret = btrfs_record_file_extent(trans, root, objectid, inode, file_pos, disk_bytenr, num_bytes); - if (ret || !checksum) + if (ret || !checksum || disk_bytenr == 0) return ret; return csum_disk_extent(trans, root, disk_bytenr, num_bytes);