btrfs,强制错误校验和重新计算

带有btrfs大型USB连接HDD包含1TB文件(磁盘映像)。 写入该文件后,第一个btrfs scrub发现在该文件中间的某处发现了3个逻辑坏块:

 [ 7702.964265] BTRFS warning (device sdd1): checksum error at logical 5473719291904 on dev /dev/sdd1, sector 222940168, root 5, inode 1245769, offset 97110921216, length 4096, links 1 (path: dysk/dysk.bin) [ 7702.964274] BTRFS error (device sdd1): bdev /dev/sdd1 errs: wr 0, rd 0, flush 0, corrupt 17, gen 0 [ 7702.964278] BTRFS error (device sdd1): unable to fixup (regular) error at logical 5473719291904 on dev /dev/sdd1 […] [ 9588.625906] BTRFS warning (device sdd1): checksum error at logical 5241172611072 on dev /dev/sdd1, sector 691494312, root 5, inode 1245769, offset 310632271872, length 4096, links 1 (path: dysk/dysk.bin) [ 9588.625916] BTRFS error (device sdd1): bdev /dev/sdd1 errs: wr 0, rd 0, flush 0, corrupt 18, gen 0 [ 9588.625920] BTRFS error (device sdd1): unable to fixup (regular) error at logical 5241172611072 on dev /dev/sdd1 […] [20545.302898] BTRFS warning (device sdd1): checksum error at logical 3991747321856 on dev /dev/sdd1, sector 3185809200, root 5, inode 1245769, offset 907925676032, length 4096, links 1 (path: dysk/dysk.bin) [20545.302908] BTRFS error (device sdd1): bdev /dev/sdd1 errs: wr 0, rd 0, flush 0, corrupt 19, gen 0 [20545.302912] BTRFS error (device sdd1): unable to fixup (regular) error at logical 3991747321856 on dev /dev/sdd1 

没有备份这个文件,所以没有完美的恢复可能。 btrfs分区的全部区域可以在没有I / O错误的情况下读取,所以我认为有两种可能的情况:数据块写入不正确(不可恢复)或存储了不正确的校验和(修复应该很简单:重新计算校验和)。 鉴于第一种情况已经丢失,我怎么才能让btrfs重新计算一个数据块的校验和呢?