Message ID | 20221109031106.201324-2-michael.christie@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block/scsi/nvme: Add error codes for PR ops | expand |
On Tue, Nov 08, 2022 at 09:11:04PM -0600, Mike Christie wrote: > If a PR operation fails we can return a device specific error which is > impossible to handle in some cases because we could have a mix of devices > when DM is used, or future users like lio only know it's interacting with > a block device so it doesn't know the type. > > This patch adds a new pr_status enum so drivers can convert errors to a > common type which can be handled by the caller. > > Signed-off-by: Mike Christie <michael.christie@oracle.com> > --- > include/uapi/linux/pr.h | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/include/uapi/linux/pr.h b/include/uapi/linux/pr.h > index ccc78cbf1221..16b856fb8053 100644 > --- a/include/uapi/linux/pr.h > +++ b/include/uapi/linux/pr.h > @@ -4,6 +4,30 @@ > > #include <linux/types.h> > > +enum pr_status { > + PR_STS_SUCCESS = 0x0, > + /* > + * These error codes have no mappings to existing SCSI errors. > + */ > + /* The request is not supported. */ > + PR_STS_OP_NOT_SUPP = 0x7fffffff, > + /* The request is invalid/illegal. */ > + PR_STS_OP_INVALID = 0x7ffffffe, > + /* > + * The following error codes are based on SCSI, because the interface > + * was originally created for it and has existing users. > + */ > + /* Generic device failure. */ > + PR_STS_IOERR = 0x2, > + PR_STS_RESERVATION_CONFLICT = 0x18, > + /* Temporary path failure that can be retried. */ > + PR_STS_RETRY_PATH_FAILURE = 0xe0000, > + /* The request was failed due to a fast failure timer. */ > + PR_STS_PATH_FAST_FAILED = 0xf0000, > + /* The path cannot be reached and has been marked as failed. */ > + PR_STS_PATH_FAILED = 0x10000, Nit: I'd movee the NOT_SUPP/INVALID to the end to follow the numerical order. Otherwise looks good: Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/include/uapi/linux/pr.h b/include/uapi/linux/pr.h index ccc78cbf1221..16b856fb8053 100644 --- a/include/uapi/linux/pr.h +++ b/include/uapi/linux/pr.h @@ -4,6 +4,30 @@ #include <linux/types.h> +enum pr_status { + PR_STS_SUCCESS = 0x0, + /* + * These error codes have no mappings to existing SCSI errors. + */ + /* The request is not supported. */ + PR_STS_OP_NOT_SUPP = 0x7fffffff, + /* The request is invalid/illegal. */ + PR_STS_OP_INVALID = 0x7ffffffe, + /* + * The following error codes are based on SCSI, because the interface + * was originally created for it and has existing users. + */ + /* Generic device failure. */ + PR_STS_IOERR = 0x2, + PR_STS_RESERVATION_CONFLICT = 0x18, + /* Temporary path failure that can be retried. */ + PR_STS_RETRY_PATH_FAILURE = 0xe0000, + /* The request was failed due to a fast failure timer. */ + PR_STS_PATH_FAST_FAILED = 0xf0000, + /* The path cannot be reached and has been marked as failed. */ + PR_STS_PATH_FAILED = 0x10000, +}; + enum pr_type { PR_WRITE_EXCLUSIVE = 1, PR_EXCLUSIVE_ACCESS = 2,
If a PR operation fails we can return a device specific error which is impossible to handle in some cases because we could have a mix of devices when DM is used, or future users like lio only know it's interacting with a block device so it doesn't know the type. This patch adds a new pr_status enum so drivers can convert errors to a common type which can be handled by the caller. Signed-off-by: Mike Christie <michael.christie@oracle.com> --- include/uapi/linux/pr.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)