xfs: move the guts of XFS_ERRORTAG_DELAY out of line

Mirror what is done for the more common XFS_ERRORTAG_TEST version,
and also only look at the error tag value once now that we can
easily have a local variable.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hans Holmberg <hans.holmberg@wdc.com>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
Christoph Hellwig
2026-01-30 06:19:19 +01:00
committed by Carlos Maiolino
parent b8862a09d8
commit e2d62bfd99
2 changed files with 24 additions and 12 deletions

View File

@@ -144,6 +144,27 @@ xfs_errortag_test(
return true;
}
void
xfs_errortag_delay(
struct xfs_mount *mp,
const char *file,
int line,
unsigned int error_tag)
{
unsigned int delay = mp->m_errortag[error_tag];
might_sleep();
if (!delay)
return;
xfs_warn_ratelimited(mp,
"Injecting %ums delay at file %s, line %d, on filesystem \"%s\"",
delay, file, line,
mp->m_super->s_id);
mdelay(delay);
}
int
xfs_errortag_add(
struct xfs_mount *mp,

View File

@@ -40,19 +40,10 @@ bool xfs_errortag_test(struct xfs_mount *mp, const char *file, int line,
unsigned int error_tag);
#define XFS_TEST_ERROR(mp, tag) \
xfs_errortag_test((mp), __FILE__, __LINE__, (tag))
bool xfs_errortag_enabled(struct xfs_mount *mp, unsigned int tag);
void xfs_errortag_delay(struct xfs_mount *mp, const char *file, int line,
unsigned int error_tag);
#define XFS_ERRORTAG_DELAY(mp, tag) \
do { \
might_sleep(); \
if (!mp->m_errortag[tag]) \
break; \
xfs_warn_ratelimited((mp), \
"Injecting %ums delay at file %s, line %d, on filesystem \"%s\"", \
(mp)->m_errortag[(tag)], __FILE__, __LINE__, \
(mp)->m_super->s_id); \
mdelay((mp)->m_errortag[(tag)]); \
} while (0)
xfs_errortag_delay((mp), __FILE__, __LINE__, (tag))
int xfs_errortag_add(struct xfs_mount *mp, unsigned int error_tag);
int xfs_errortag_clearall(struct xfs_mount *mp);
#else