summaryrefslogtreecommitdiff
path: root/cmd/btrfs-dump-tree
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/btrfs-dump-tree')
-rw-r--r--cmd/btrfs-dump-tree/main.go19
1 files changed, 13 insertions, 6 deletions
diff --git a/cmd/btrfs-dump-tree/main.go b/cmd/btrfs-dump-tree/main.go
index a1c7a03..b51e999 100644
--- a/cmd/btrfs-dump-tree/main.go
+++ b/cmd/btrfs-dump-tree/main.go
@@ -75,11 +75,13 @@ func Main(imgfilename string) (err error) {
return err
}
}
- if err := fs.WalkTree(superblock.Data.RootTree, func(key btrfs.Key, body btrfsitem.Item) error {
- if key.ItemType != btrfsitem.ROOT_ITEM_KEY {
- return nil
- }
- return printTree(fs, body.(btrfsitem.Root).ByteNr)
+ 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 {
+ return nil
+ }
+ return printTree(fs, body.(btrfsitem.Root).ByteNr)
+ },
}); err != nil {
return err
}
@@ -91,7 +93,8 @@ func Main(imgfilename string) (err error) {
func printTree(fs *btrfs.FS, root btrfs.LogicalAddr) error {
nodeRef, err := fs.ReadNode(root)
if err != nil {
- return err
+ fmt.Fprintf(os.Stderr, "error: %v\n", err)
+ return nil
}
node := nodeRef.Data
printHeaderInfo(node)
@@ -209,6 +212,10 @@ func printTree(fs *btrfs.FS, root btrfs.LogicalAddr) error {
// // TODO
//case btrfsitem.TEMPORARY_ITEM_KEY:
// // TODO
+ case btrfsitem.Error:
+ fmt.Printf("\t\t(error) error item: %v\n", body.Err)
+ default:
+ fmt.Printf("\t\t(error) unhandled item type: %T\n", body)
}
}
}