Commit e2d62bfd authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Carlos Maiolino
Browse files

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: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarHans Holmberg <hans.holmberg@wdc.com>
Reviewed-by: default avatarCarlos Maiolino <cmaiolino@redhat.com>
Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
Signed-off-by: default avatarCarlos Maiolino <cem@kernel.org>
parent b8862a09
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -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,
+3 −12
Original line number Diff line number Diff line
@@ -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