xfs: fix xfs_error_get_cfg for negative errnos
xfs_error_get_cfg() is called with bp->b_error as an arg, which is negative, so the switch statement won't ever find any matches. This results in only the default error handler having any effect, as EIO/ENOSPC/ENODEV get ignored due to the wrong sign. It seems simplest to always flip the error sign to positive, so that we can handle either negative errors in bp->b_error, or possibly a positive errno via something like xfs_error_get_cfg(EIO) - this future-proofs the function. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>hifive-unleashed-5.1
parent
1a695a905c
commit
e97f6c545f
|
@ -634,6 +634,9 @@ xfs_error_get_cfg(
|
||||||
{
|
{
|
||||||
struct xfs_error_cfg *cfg;
|
struct xfs_error_cfg *cfg;
|
||||||
|
|
||||||
|
if (error < 0)
|
||||||
|
error = -error;
|
||||||
|
|
||||||
switch (error) {
|
switch (error) {
|
||||||
case EIO:
|
case EIO:
|
||||||
cfg = &mp->m_error_cfg[error_class][XFS_ERR_EIO];
|
cfg = &mp->m_error_cfg[error_class][XFS_ERR_EIO];
|
||||||
|
|
Loading…
Reference in New Issue