]> git.baikalelectronics.ru Git - kernel.git/commitdiff
xfs: fix deadlock retry tracepoint arguments
authorDarrick J. Wong <djwong@kernel.org>
Wed, 12 May 2021 23:41:13 +0000 (16:41 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Thu, 20 May 2021 15:31:22 +0000 (08:31 -0700)
sc->ip is the inode that's being scrubbed, which means that it's not set
for scrub types that don't involve inodes.  If one of those scrubbers
(e.g. inode btrees) returns EDEADLOCK, we'll trip over the null pointer.
Fix that by reporting either the file being examined or the file that
was used to call scrub.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Brian Foster <bfoster@redhat.com>
fs/xfs/scrub/common.c

index aa874607618a22e0dbc763f5e540994619231057..be38c960da85863ca6f530b2db3e52fc4f22cc80 100644 (file)
@@ -74,7 +74,9 @@ __xchk_process_error(
                return true;
        case -EDEADLOCK:
                /* Used to restart an op with deadlock avoidance. */
-               trace_xchk_deadlock_retry(sc->ip, sc->sm, *error);
+               trace_xchk_deadlock_retry(
+                               sc->ip ? sc->ip : XFS_I(file_inode(sc->file)),
+                               sc->sm, *error);
                break;
        case -EFSBADCRC:
        case -EFSCORRUPTED: