diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2022-07-13 00:36:34 -0600 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2022-07-13 00:36:34 -0600 |
commit | 7df18a02a988086d940a011eafeb1b8d70775005 (patch) | |
tree | d0d3c39fa5d12dc5fcc8de2381b47667bc3cdbc0 /lib/btrfsprogs/btrfsutil | |
parent | f1e8040bc33e9057bd7a756a09c431c3f0d86226 (diff) |
Have TreeWalk be cancelable
Diffstat (limited to 'lib/btrfsprogs/btrfsutil')
-rw-r--r-- | lib/btrfsprogs/btrfsutil/walk.go | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/btrfsprogs/btrfsutil/walk.go b/lib/btrfsprogs/btrfsutil/walk.go index d2b6367..c597e5e 100644 --- a/lib/btrfsprogs/btrfsutil/walk.go +++ b/lib/btrfsprogs/btrfsutil/walk.go @@ -5,6 +5,7 @@ package btrfsutil import ( + "context" "fmt" "git.lukeshu.com/btrfs-progs-ng/lib/btrfs" @@ -34,7 +35,7 @@ type WalkAllTreesHandler struct { // WalkAllTrees walks all trees in a *btrfs.FS. Rather than returning // an error, it calls errCb each time an error is encountered. The // error will always be of type WalkError. -func WalkAllTrees(fs *btrfs.FS, cbs WalkAllTreesHandler) { +func WalkAllTrees(ctx context.Context, fs *btrfs.FS, cbs WalkAllTreesHandler) { var treeName string trees := []struct { @@ -83,6 +84,7 @@ func WalkAllTrees(fs *btrfs.FS, cbs WalkAllTreesHandler) { cbs.PreTree(treeName, tree.ID) } fs.TreeWalk( + ctx, tree.ID, func(err *btrfs.TreeError) { cbs.Err(&WalkError{TreeName: treeName, Err: err}) }, cbs.TreeWalkHandler, |