@@ -717,7 +717,9 @@ xfs_scrub_get_inode(
error, __return_address);
return error;
}
+ trace_xfs_scrub_iget_target(ip, __this_address);
if (VFS_I(ip)->i_generation != sc->sm->sm_gen) {
+ trace_xfs_scrub_iput_target(ip, __this_address);
iput(VFS_I(ip));
return -ENOENT;
}
@@ -81,6 +81,7 @@ xfs_scrub_dir_check_ftype(
if (!xfs_scrub_fblock_xref_process_error(sdc->sc, XFS_DATA_FORK, offset,
&error))
goto out;
+ trace_xfs_scrub_iget(ip, __this_address);
/* Convert mode to the DT_* values that dir_emit uses. */
ino_dtype = xfs_dir3_get_dtype(mp,
@@ -170,6 +170,7 @@ xfs_scrub_parent_validate(
}
if (!xfs_scrub_fblock_xref_process_error(sc, XFS_DATA_FORK, 0, &error))
goto out;
+ trace_xfs_scrub_iget(dp, __this_address);
if (dp == sc->ip || !S_ISDIR(VFS_I(dp)->i_mode)) {
xfs_scrub_fblock_set_corrupt(sc, XFS_DATA_FORK, 0);
goto out_rele;
@@ -191,6 +191,7 @@ xfs_scrub_teardown(
sc->tp = NULL;
}
if (sc->ip) {
+ trace_xfs_scrub_iput_target(sc->ip, __this_address);
if (sc->ilock_flags)
xfs_iunlock(sc->ip, sc->ilock_flags);
if (sc->ip != ip_in &&
@@ -509,6 +509,9 @@ DEFINE_EVENT(xfs_scrub_iref_class, name, \
DEFINE_SCRUB_IREF_EVENT(xfs_scrub_iput_deferred);
DEFINE_SCRUB_IREF_EVENT(xfs_scrub_iput_defer);
DEFINE_SCRUB_IREF_EVENT(xfs_scrub_iput_now);
+DEFINE_SCRUB_IREF_EVENT(xfs_scrub_iget);
+DEFINE_SCRUB_IREF_EVENT(xfs_scrub_iget_target);
+DEFINE_SCRUB_IREF_EVENT(xfs_scrub_iput_target);
/* repair tracepoints */
#if IS_ENABLED(CONFIG_XFS_ONLINE_REPAIR)