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: Carlos Maiolino <cmaiolino@redhat.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
Родитель
50e0bdbe9f
Коммит
d04c241c66
|
@ -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)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче