]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: handle errors from ->free_blocks in xfs_btree_kill_iroot
authorChristoph Hellwig <hch@lst.de>
Wed, 17 Feb 2016 06:04:02 +0000 (17:04 +1100)
committerDave Chinner <david@fromorbit.com>
Wed, 17 Feb 2016 06:04:02 +0000 (17:04 +1100)
Source kernel commit 196328ec973a74ee52cc282824e72c3824dc1cf5

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
libxfs/xfs_btree.c

index efcad2627b19e361cf9fff8091acfa6b9904c25a..14d8bf3e55dc78c53dacfebe59b67e5534c26835 100644 (file)
@@ -3209,6 +3209,7 @@ xfs_btree_kill_iroot(
        int                     level;
        int                     index;
        int                     numrecs;
+       int                     error;
 #ifdef DEBUG
        union xfs_btree_ptr     ptr;
        int                     i;
@@ -3272,8 +3273,6 @@ xfs_btree_kill_iroot(
        cpp = xfs_btree_ptr_addr(cur, 1, cblock);
 #ifdef DEBUG
        for (i = 0; i < numrecs; i++) {
-               int             error;
-
                error = xfs_btree_check_ptr(cur, cpp, i, level - 1);
                if (error) {
                        XFS_BTREE_TRACE_CURSOR(cur, XBT_ERROR);
@@ -3283,7 +3282,11 @@ xfs_btree_kill_iroot(
 #endif
        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);
 
        cur->bc_bufs[level - 1] = NULL;