diff options
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/btrfs-dump-tree/main.go | 10 | ||||
-rw-r--r-- | cmd/btrfs-fsck/pass1.go | 3 | ||||
-rw-r--r-- | cmd/btrfs-fsck/pass2.go | 16 |
3 files changed, 15 insertions, 14 deletions
diff --git a/cmd/btrfs-dump-tree/main.go b/cmd/btrfs-dump-tree/main.go index ad3f126..e32d677 100644 --- a/cmd/btrfs-dump-tree/main.go +++ b/cmd/btrfs-dump-tree/main.go @@ -75,8 +75,8 @@ func Main(imgfilename string) (err error) { } } if err := fs.WalkTree(superblock.Data.RootTree, btrfs.WalkTreeHandler{ - Item: func(key btrfs.Key, body btrfsitem.Item) error { - if key.ItemType != btrfsitem.ROOT_ITEM_KEY { + Item: func(_ btrfs.WalkTreePath, item btrfs.Item) error { + if item.Head.Key.ItemType != btrfsitem.ROOT_ITEM_KEY { return nil } treeName, ok := map[btrfs.ObjID]string{ @@ -98,12 +98,12 @@ func Main(imgfilename string) (err error) { btrfs.FREE_SPACE_TREE_OBJECTID: "free space", btrfs.MULTIPLE_OBJECTIDS: "multiple", btrfs.BLOCK_GROUP_TREE_OBJECTID: "block group", - }[key.ObjectID] + }[item.Head.Key.ObjectID] if !ok { treeName = "file" } - fmt.Printf("%v tree %v \n", treeName, btrfsmisc.FmtKey(key)) - return btrfsmisc.PrintTree(fs, body.(btrfsitem.Root).ByteNr) + fmt.Printf("%v tree %v \n", treeName, btrfsmisc.FmtKey(item.Head.Key)) + return btrfsmisc.PrintTree(fs, item.Body.(btrfsitem.Root).ByteNr) }, }); err != nil { return err diff --git a/cmd/btrfs-fsck/pass1.go b/cmd/btrfs-fsck/pass1.go index 37fca0c..bd2b6d9 100644 --- a/cmd/btrfs-fsck/pass1.go +++ b/cmd/btrfs-fsck/pass1.go @@ -25,8 +25,9 @@ func pass1(fs *btrfs.FS, superblock *util.Ref[btrfs.PhysicalAddr, btrfs.Superblo fmt.Printf("Pass 1: ... walking chunk tree\n") visitedChunkNodes := make(map[btrfs.LogicalAddr]struct{}) if err := fs.WalkTree(superblock.Data.ChunkTree, btrfs.WalkTreeHandler{ - Node: func(node *util.Ref[btrfs.LogicalAddr, btrfs.Node], err error) error { + Node: func(path btrfs.WalkTreePath, node *util.Ref[btrfs.LogicalAddr, btrfs.Node], err error) error { if err != nil { + err = fmt.Errorf("%v: %w", path, err) fmt.Printf("Pass 1: ... walk chunk tree: error: %v\n", err) } if node != nil { diff --git a/cmd/btrfs-fsck/pass2.go b/cmd/btrfs-fsck/pass2.go index c1ec61b..7c4a090 100644 --- a/cmd/btrfs-fsck/pass2.go +++ b/cmd/btrfs-fsck/pass2.go @@ -10,17 +10,17 @@ import ( func walkFS(fs *btrfs.FS, cbs btrfs.WalkTreeHandler, errCb func(error)) { origItem := cbs.Item - cbs.Item = func(key btrfs.Key, body btrfsitem.Item) error { - if key.ItemType == btrfsitem.ROOT_ITEM_KEY { - root, ok := body.(btrfsitem.Root) + cbs.Item = func(path btrfs.WalkTreePath, item btrfs.Item) error { + if item.Head.Key.ItemType == btrfsitem.ROOT_ITEM_KEY { + root, ok := item.Body.(btrfsitem.Root) if !ok { - errCb(fmt.Errorf("ROOT_ITEM_KEY is a %T, not a btrfsitem.Root", body)) + errCb(fmt.Errorf("%v: ROOT_ITEM_KEY is a %T, not a btrfsitem.Root", path, item.Body)) } else if err := fs.WalkTree(root.ByteNr, cbs); err != nil { - errCb(fmt.Errorf("tree %v: %w", key.ObjectID.Format(0), err)) + errCb(fmt.Errorf("%v: tree %v: %w", path, item.Head.Key.ObjectID.Format(0), err)) } } if origItem != nil { - return origItem(key, body) + return origItem(path, item) } return nil } @@ -50,9 +50,9 @@ func pass2(fs *btrfs.FS, foundNodes map[btrfs.LogicalAddr]struct{}) { visitedNodes := make(map[btrfs.LogicalAddr]struct{}) walkFS(fs, btrfs.WalkTreeHandler{ - Node: func(node *util.Ref[btrfs.LogicalAddr, btrfs.Node], err error) error { + Node: func(path btrfs.WalkTreePath, node *util.Ref[btrfs.LogicalAddr, btrfs.Node], err error) error { if err != nil { - fmt.Printf("Pass 2: node error: %v\n", err) + fmt.Printf("Pass 2: node error: %v: %v\n", path, err) } if node != nil { visitedNodes[node.Addr] = struct{}{} |