Commit d04c241c authored by Carlos Maiolino's avatar Carlos Maiolino Committed by Darrick J. Wong

xfs: Check for m_errortag initialization in xfs_errortag_test

While adding error injection into IO completion, I notice the lack of
initialization check in xfs_errortag_test(), make the error injection
mechanism unable to be used there.

IO completion is executed a few times before the error injection
mechanism is initialized, so to be safer, make xfs_errortag_test() check
if the errortag is properly initialized.
Signed-off-by: default avatarCarlos Maiolino <cmaiolino@redhat.com>
Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
parent 50e0bdbe
...@@ -233,6 +233,17 @@ xfs_errortag_test( ...@@ -233,6 +233,17 @@ xfs_errortag_test(
{ {
unsigned int randfactor; unsigned int randfactor;
/*
* To be able to use error injection anywhere, we need to ensure error
* injection mechanism is already initialized.
*
* Code paths like I/O completion can be called before the
* initialization is complete, but be able to inject errors in such
* places is still useful.
*/
if (!mp->m_errortag)
return false;
ASSERT(error_tag < XFS_ERRTAG_MAX); ASSERT(error_tag < XFS_ERRTAG_MAX);
randfactor = mp->m_errortag[error_tag]; randfactor = mp->m_errortag[error_tag];
if (!randfactor || prandom_u32() % randfactor) if (!randfactor || prandom_u32() % randfactor)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment