[PATCH] Btrfs-progs: fix a bug of converting sparse ext2/3/4

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>
---
 btrfs-convert.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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

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




[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux