Commit e97f6c54 authored by Eric Sandeen's avatar Eric Sandeen Committed by Dave Chinner

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: default avatarEric Sandeen <sandeen@redhat.com>
Reviewed-by: default avatarCarlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
parent 1a695a90
...@@ -634,6 +634,9 @@ xfs_error_get_cfg( ...@@ -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];
......
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