summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDarrick J. Wong <darrick.wong@oracle.com>2020-10-19 18:28:02 +0200
committerDarrick J. Wong <darrick.wong@oracle.com>2020-10-22 01:28:46 +0200
commit2e76f188fd90d9ac29adbb82c30345f84d04bfa4 (patch)
treec0cdb97658a37abdf06430eba8790daf928d66af /lib
parentxfs: fix fallocate functions when rtextsize is larger than 1 (diff)
downloadlinux-2e76f188fd90d9ac29adbb82c30345f84d04bfa4.tar.xz
linux-2e76f188fd90d9ac29adbb82c30345f84d04bfa4.zip
xfs: cancel intents immediately if process_intents fails
If processing recovered log intent items fails, we need to cancel all the unprocessed recovered items immediately so that a subsequent AIL push in the bail out path won't get wedged on the pinned intent items that didn't get processed. This can happen if the log contains (1) an intent that gets and releases an inode, (2) an intent that cannot be recovered successfully, and (3) some third intent item. When recovery of (2) fails, we leave (3) pinned in memory. Inode reclamation is called in the error-out path of xfs_mountfs before xfs_log_cancel_mount. Reclamation calls xfs_ail_push_all_sync, which gets stuck waiting for (3). Therefore, call xlog_recover_cancel_intents if _process_intents fails. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Brian Foster <bfoster@redhat.com>
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions