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 <bo.li.liu@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
This commit is contained in:
Liu Bo 2014-11-25 17:35:52 +08:00 committed by David Sterba
parent b5e1ca5a49
commit ad96e8f4d6
1 changed files with 1 additions and 1 deletions

View File

@ -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);