Skip to content

Commit

Permalink
xfs: add configuration handlers for specific errors
Browse files Browse the repository at this point in the history
now most of the infrastructure is in place, we can start adding
support for configuring specific errors such as ENODEV, ENOSPC, EIO,
etc. Add these error configurations and configure them all to have
appropriate behaviours. That is, all will be configured to retry
forever by default, except for ENODEV, which is an unrecoverable
error, so it will be configured to not retry on error

Signed-off-by: Dave Chinner <[email protected]>
Signed-off-by: Carlos Maiolino <[email protected]>
Reviewed-by: Brian Foster <[email protected]>
Signed-off-by: Dave Chinner <[email protected]>
  • Loading branch information
cmaiolino authored and dchinner committed May 18, 2016
1 parent a5ea70d commit e0a431b
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
3 changes: 3 additions & 0 deletions fs/xfs/xfs_mount.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ enum {
};
enum {
XFS_ERR_DEFAULT,
XFS_ERR_EIO,
XFS_ERR_ENOSPC,
XFS_ERR_ENODEV,
XFS_ERR_ERRNO_MAX,
};

Expand Down
22 changes: 21 additions & 1 deletion fs/xfs/xfs_sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -478,9 +478,20 @@ struct xfs_error_init {

static const struct xfs_error_init xfs_error_meta_init[XFS_ERR_ERRNO_MAX] = {
{ .name = "default",
.max_retries = -1,
.max_retries = XFS_ERR_RETRY_FOREVER,
.retry_timeout = 0,
},
{ .name = "EIO",
.max_retries = XFS_ERR_RETRY_FOREVER,
.retry_timeout = 0,
},
{ .name = "ENOSPC",
.max_retries = XFS_ERR_RETRY_FOREVER,
.retry_timeout = 0,
},
{ .name = "ENODEV",
.max_retries = 0,
},
};

static int
Expand Down Expand Up @@ -578,6 +589,15 @@ xfs_error_get_cfg(
struct xfs_error_cfg *cfg;

switch (error) {
case EIO:
cfg = &mp->m_error_cfg[error_class][XFS_ERR_EIO];
break;
case ENOSPC:
cfg = &mp->m_error_cfg[error_class][XFS_ERR_ENOSPC];
break;
case ENODEV:
cfg = &mp->m_error_cfg[error_class][XFS_ERR_ENODEV];
break;
default:
cfg = &mp->m_error_cfg[error_class][XFS_ERR_DEFAULT];
break;
Expand Down

0 comments on commit e0a431b

Please sign in to comment.