This patchset can be fetched from github: https://github.com/adam900710/btrfs-progs/tree/commit_failure_cleanup
This patchset will address the BUG_ON() triggered in fuzz-tests/003 and fuzz-tests/009. For proper error handling in btrfs_commit_transaction(), we need a way to clean up per-transaction data properly. Currently we only have delayed refs which are per-transaction, so introduce a new function, btrfs_destroy_delayed_refs() to cleanup delayed refs. Now btrfs_commit_transaction() can error out gracefully with proper cleanup. Patch 1 and 2 are just some minor cleanups found when crafting the 3rd patch. Qu Wenruo (3): btrfs-progs: Remove the dead branch in btrfs_run_delayed_refs() btrfs-progs: Refactor btrfs_finish_extent_commit() btrfs-progs: Handle error properly in btrfs_commit_transaction() ctree.h | 4 +--- delayed-ref.c | 24 ++++++++++++++++++++++++ delayed-ref.h | 5 +++++ extent-tree.c | 22 +++++++++------------- transaction.c | 23 +++++++++++++++-------- 5 files changed, 54 insertions(+), 24 deletions(-) -- 2.21.0
