]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
xfs: don't iunlock the quota ip when quota block
authorDarrick J. Wong <darrick.wong@oracle.com>
Wed, 7 Mar 2018 01:08:30 +0000 (17:08 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Mon, 12 Mar 2018 03:27:56 +0000 (20:27 -0700)
In xfs_qm_dqalloc, we join the locked quota inode to the transaction we
use to allocate blocks.  If the allocation or mapping fails, we're not
allowed to unlock the inode because the transaction code is in charge of
unlocking it for us.  Therefore, remove the iunlock call to avoid
blowing asserts about unbalanced locking + mount hang.

Found by corrupting the AGF and allocating space in the filesystem
(quotacheck) immediately after mount.  The upcoming agfl wrapping fixup
test will trigger this scenario.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
fs/xfs/xfs_dquot.c

index 43572f8a1b8e4ac460e68051abbb540a7f38149b..2410acc900f0e6571241d31e8f84eecf75202c44 100644 (file)
@@ -394,8 +394,6 @@ xfs_qm_dqalloc(
 error1:
        xfs_defer_cancel(&dfops);
 error0:
-       xfs_iunlock(quotip, XFS_ILOCK_EXCL);
-
        return error;
 }