Commit 196328ec authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Dave Chinner

xfs: handle errors from ->free_blocks in xfs_btree_kill_iroot

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
parent 36f90b0a
...@@ -3209,6 +3209,7 @@ xfs_btree_kill_iroot( ...@@ -3209,6 +3209,7 @@ xfs_btree_kill_iroot(
int level; int level;
int index; int index;
int numrecs; int numrecs;
int error;
#ifdef DEBUG #ifdef DEBUG
union xfs_btree_ptr ptr; union xfs_btree_ptr ptr;
int i; int i;
...@@ -3272,8 +3273,6 @@ xfs_btree_kill_iroot( ...@@ -3272,8 +3273,6 @@ xfs_btree_kill_iroot(
cpp = xfs_btree_ptr_addr(cur, 1, cblock); cpp = xfs_btree_ptr_addr(cur, 1, cblock);
#ifdef DEBUG #ifdef DEBUG
for (i = 0; i < numrecs; i++) { for (i = 0; i < numrecs; i++) {
int error;
error = xfs_btree_check_ptr(cur, cpp, i, level - 1); error = xfs_btree_check_ptr(cur, cpp, i, level - 1);
if (error) { if (error) {
XFS_BTREE_TRACE_CURSOR(cur, XBT_ERROR); XFS_BTREE_TRACE_CURSOR(cur, XBT_ERROR);
...@@ -3283,7 +3282,11 @@ xfs_btree_kill_iroot( ...@@ -3283,7 +3282,11 @@ xfs_btree_kill_iroot(
#endif #endif
xfs_btree_copy_ptrs(cur, pp, cpp, numrecs); xfs_btree_copy_ptrs(cur, pp, cpp, numrecs);
cur->bc_ops->free_block(cur, cbp); error = cur->bc_ops->free_block(cur, cbp);
if (error) {
XFS_BTREE_TRACE_CURSOR(cur, XBT_ERROR);
return error;
}
XFS_BTREE_STATS_INC(cur, free); XFS_BTREE_STATS_INC(cur, free);
cur->bc_bufs[level - 1] = NULL; cur->bc_bufs[level - 1] = NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment