diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2022-07-02 16:42:13 -0600 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2022-07-02 17:04:11 -0600 |
commit | cd46b6b734d833a9e2d83ba92e8f7348e63afe7e (patch) | |
tree | 929fc86215381fe43927894d86869e0c17d808c8 /pkg/btrfsmisc | |
parent | 9ddcd2c3ed2f85247161c5ffa653f33e6a01a9cd (diff) |
implement EXTENT_CSUM
Diffstat (limited to 'pkg/btrfsmisc')
-rw-r--r-- | pkg/btrfsmisc/print_tree.go | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/pkg/btrfsmisc/print_tree.go b/pkg/btrfsmisc/print_tree.go index bc3224b..59ad0f5 100644 --- a/pkg/btrfsmisc/print_tree.go +++ b/pkg/btrfsmisc/print_tree.go @@ -7,6 +7,7 @@ import ( "lukeshu.com/btrfs-tools/pkg/btrfs" "lukeshu.com/btrfs-tools/pkg/btrfs/btrfsitem" + "lukeshu.com/btrfs-tools/pkg/btrfs/btrfssum" "lukeshu.com/btrfs-tools/pkg/btrfs/btrfsvol" "lukeshu.com/btrfs-tools/pkg/util" ) @@ -117,8 +118,27 @@ func PrintTree(fs *btrfs.FS, root btrfsvol.LogicalAddr) error { // // TODO //case btrfsitem.SHARED_DATA_REF_KEY: // // TODO - //case btrfsitem.EXTENT_CSUM_KEY: - // // TODO + case btrfsitem.ExtentCSum: + sb, _ := fs.Superblock() + sectorSize := btrfsvol.AddrDelta(sb.Data.SectorSize) + + start := btrfsvol.LogicalAddr(item.Head.Key.Offset) + itemSize := btrfsvol.AddrDelta(len(body.Sums)) * sectorSize + fmt.Printf("\t\trange start %d end %d length %d", + start, start.Add(itemSize), itemSize) + sumsPerLine := util.Max(1, len(btrfssum.CSum{})/body.ChecksumSize/2) + + pos := start + for i, sum := range body.Sums { + if i%sumsPerLine == 0 { + fmt.Printf("\n\t\t") + } else { + fmt.Printf(" ") + } + fmt.Printf("[%d] 0x%s", pos, sum.Fmt(sb.Data.ChecksumType)) + pos = pos.Add(sectorSize) + } + fmt.Printf("\n") case btrfsitem.FileExtent: fmt.Printf("\t\tgeneration %v type %v\n", body.Generation, body.Type) |