diff mbox series

[v2] include/public: add command result definitions to vscsiif.h

Message ID 20220323085831.27057-1-jgross@suse.com (mailing list archive)
State New, archived
Headers show
Series [v2] include/public: add command result definitions to vscsiif.h | expand

Commit Message

Juergen Gross March 23, 2022, 8:58 a.m. UTC
The result field of struct vscsiif_response is lacking a detailed
definition. Today the Linux kernel internal scsi definitions are being
used, which is not a sane interface for a PV device driver.

Add macros to change that by using today's values in the XEN namespace.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- put macro parameters in parentheses (Jan Beulich)
- correct XEN_VSCSIIF_RSLT_HOST() (Jan Beulich)
- more verbose result defines (Jan Beulich)
- add reset result defines (Jan Beulich)
---
 xen/include/public/io/vscsiif.h | 51 +++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

Comments

Luca Fancellu March 23, 2022, 11:10 a.m. UTC | #1
> On 23 Mar 2022, at 08:58, Juergen Gross <jgross@suse.com> wrote:
> 
> The result field of struct vscsiif_response is lacking a detailed
> definition. Today the Linux kernel internal scsi definitions are being
> used, which is not a sane interface for a PV device driver.
> 
> Add macros to change that by using today's values in the XEN namespace.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
> V2:
> - put macro parameters in parentheses (Jan Beulich)
> - correct XEN_VSCSIIF_RSLT_HOST() (Jan Beulich)
> - more verbose result defines (Jan Beulich)
> - add reset result defines (Jan Beulich)
> ---
> xen/include/public/io/vscsiif.h | 51 +++++++++++++++++++++++++++++++++
> 1 file changed, 51 insertions(+)
> 
> diff --git a/xen/include/public/io/vscsiif.h b/xen/include/public/io/vscsiif.h
> index c9ceb1884d..8553b17cc6 100644
> --- a/xen/include/public/io/vscsiif.h
> +++ b/xen/include/public/io/vscsiif.h
> @@ -315,6 +315,57 @@ struct vscsiif_response {
> };
> typedef struct vscsiif_response vscsiif_response_t;
> 
> +/* SCSI I/O status from vscsiif_response->rslt */
> +#define XEN_VSCSIIF_RSLT_STATUS(x)  ((x) & 0x00ff)
> +
> +/* Host I/O status from vscsiif_response->rslt */
> +#define XEN_VSCSIIF_RSLT_HOST(x)    (((x) & 0x00ff0000) >> 16)
> +#define XEN_VSCSIIF_RSLT_HOST_OK                   0
> +/* Couldn't connect before timeout */
> +#define XEN_VSCSIIF_RSLT_HOST_NO_CONNECT           1
> +/* Bus busy through timeout */
> +#define XEN_VSCSIIF_RSLT_HOST_BUS_BUSY             2
> +/* Timed out for other reason */
> +#define XEN_VSCSIIF_RSLT_HOST_TIME_OUT             3
> +/* Bad target */
> +#define XEN_VSCSIIF_RSLT_HOST_BAD_TARGET           4
> +/* Abort for some other reason */
> +#define XEN_VSCSIIF_RSLT_HOST_ABORT                5
> +/* Parity error */
> +#define XEN_VSCSIIF_RSLT_HOST_PARITY               6
> +/* Internal error */
> +#define XEN_VSCSIIF_RSLT_HOST_ERROR                7
> +/* Reset by somebody */
> +#define XEN_VSCSIIF_RSLT_HOST_RESET                8
> +/* Unexpected interrupt */
> +#define XEN_VSCSIIF_RSLT_HOST_BAD_INTR             9
> +/* Force command past mid-layer */
> +#define XEN_VSCSIIF_RSLT_HOST_PASSTHROUGH         10
> +/* Retry requested */
> +#define XEN_VSCSIIF_RSLT_HOST_SOFT_ERROR          11
> +/* Hidden retry requested */
> +#define XEN_VSCSIIF_RSLT_HOST_IMM_RETRY           12
> +/* Requeue command requested */
> +#define XEN_VSCSIIF_RSLT_HOST_REQUEUE             13
> +/* Transport error disrupted I/O */
> +#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_DISRUPTED 14
> +/* Transport class fastfailed */
> +#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_FAILFAST  15
> +/* Permanent target failure */
> +#define XEN_VSCSIIF_RSLT_HOST_TARGET_FAILURE      16
> +/* Permanent nexus failure on path */
> +#define XEN_VSCSIIF_RSLT_HOST_NEXUS_FAILURE       17
> +/* Space allocation on device failed */
> +#define XEN_VSCSIIF_RSLT_HOST_ALLOC_FAILURE       18
> +/* Medium error */
> +#define XEN_VSCSIIF_RSLT_HOST_MEDIUM_ERROR        19
> +/* Transport marginal errors */
> +#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_MARGINAL  20

Hi Juergen,

Would it makes sense to define the values in hex like in include/scsi/scsi_status.h
so that they are more easy to compare?

However this looks good to me,

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>


> +
> +/* Result values of reset operations */
> +#define XEN_VSCSIIF_RSLT_RESET_SUCCESS  0x2002
> +#define XEN_VSCSIIF_RSLT_RESET_FAILED   0x2003
> +
> DEFINE_RING_TYPES(vscsiif, struct vscsiif_request, struct vscsiif_response);
> 
> 
> -- 
> 2.34.1
> 
>
Luca Fancellu March 23, 2022, 11:22 a.m. UTC | #2
> On 23 Mar 2022, at 11:10, Luca Fancellu <Luca.Fancellu@arm.com> wrote:
> 
> 
> 
>> On 23 Mar 2022, at 08:58, Juergen Gross <jgross@suse.com> wrote:
>> 
>> The result field of struct vscsiif_response is lacking a detailed
>> definition. Today the Linux kernel internal scsi definitions are being
>> used, which is not a sane interface for a PV device driver.
>> 
>> Add macros to change that by using today's values in the XEN namespace.
>> 
>> Signed-off-by: Juergen Gross <jgross@suse.com>
>> ---
>> V2:
>> - put macro parameters in parentheses (Jan Beulich)
>> - correct XEN_VSCSIIF_RSLT_HOST() (Jan Beulich)
>> - more verbose result defines (Jan Beulich)
>> - add reset result defines (Jan Beulich)
>> ---
>> xen/include/public/io/vscsiif.h | 51 +++++++++++++++++++++++++++++++++
>> 1 file changed, 51 insertions(+)
>> 
>> diff --git a/xen/include/public/io/vscsiif.h b/xen/include/public/io/vscsiif.h
>> index c9ceb1884d..8553b17cc6 100644
>> --- a/xen/include/public/io/vscsiif.h
>> +++ b/xen/include/public/io/vscsiif.h
>> @@ -315,6 +315,57 @@ struct vscsiif_response {
>> };
>> typedef struct vscsiif_response vscsiif_response_t;
>> 
>> +/* SCSI I/O status from vscsiif_response->rslt */
>> +#define XEN_VSCSIIF_RSLT_STATUS(x)  ((x) & 0x00ff)

Sorry Juergen,

A thing came to me after sending my first message, is XEN_VSCSIIF_RSLT_STATUS meant
to be used to compare the result with XEN_VSCSIIF_RSLT_RESET_SUCCESS or 
XEN_VSCSIIF_RSLT_RESET_FAILED?

Because I think the mask should be 0xFFFF instead of 0xFF since we have the bit 13 set

Cheers,
Luca

>> +
>> +/* Host I/O status from vscsiif_response->rslt */
>> +#define XEN_VSCSIIF_RSLT_HOST(x)    (((x) & 0x00ff0000) >> 16)
>> +#define XEN_VSCSIIF_RSLT_HOST_OK                   0
>> +/* Couldn't connect before timeout */
>> +#define XEN_VSCSIIF_RSLT_HOST_NO_CONNECT           1
>> +/* Bus busy through timeout */
>> +#define XEN_VSCSIIF_RSLT_HOST_BUS_BUSY             2
>> +/* Timed out for other reason */
>> +#define XEN_VSCSIIF_RSLT_HOST_TIME_OUT             3
>> +/* Bad target */
>> +#define XEN_VSCSIIF_RSLT_HOST_BAD_TARGET           4
>> +/* Abort for some other reason */
>> +#define XEN_VSCSIIF_RSLT_HOST_ABORT                5
>> +/* Parity error */
>> +#define XEN_VSCSIIF_RSLT_HOST_PARITY               6
>> +/* Internal error */
>> +#define XEN_VSCSIIF_RSLT_HOST_ERROR                7
>> +/* Reset by somebody */
>> +#define XEN_VSCSIIF_RSLT_HOST_RESET                8
>> +/* Unexpected interrupt */
>> +#define XEN_VSCSIIF_RSLT_HOST_BAD_INTR             9
>> +/* Force command past mid-layer */
>> +#define XEN_VSCSIIF_RSLT_HOST_PASSTHROUGH         10
>> +/* Retry requested */
>> +#define XEN_VSCSIIF_RSLT_HOST_SOFT_ERROR          11
>> +/* Hidden retry requested */
>> +#define XEN_VSCSIIF_RSLT_HOST_IMM_RETRY           12
>> +/* Requeue command requested */
>> +#define XEN_VSCSIIF_RSLT_HOST_REQUEUE             13
>> +/* Transport error disrupted I/O */
>> +#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_DISRUPTED 14
>> +/* Transport class fastfailed */
>> +#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_FAILFAST  15
>> +/* Permanent target failure */
>> +#define XEN_VSCSIIF_RSLT_HOST_TARGET_FAILURE      16
>> +/* Permanent nexus failure on path */
>> +#define XEN_VSCSIIF_RSLT_HOST_NEXUS_FAILURE       17
>> +/* Space allocation on device failed */
>> +#define XEN_VSCSIIF_RSLT_HOST_ALLOC_FAILURE       18
>> +/* Medium error */
>> +#define XEN_VSCSIIF_RSLT_HOST_MEDIUM_ERROR        19
>> +/* Transport marginal errors */
>> +#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_MARGINAL  20
> 
> Hi Juergen,
> 
> Would it makes sense to define the values in hex like in include/scsi/scsi_status.h
> so that they are more easy to compare?
> 
> However this looks good to me,
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
> 
> 
>> +
>> +/* Result values of reset operations */
>> +#define XEN_VSCSIIF_RSLT_RESET_SUCCESS  0x2002
>> +#define XEN_VSCSIIF_RSLT_RESET_FAILED   0x2003
>> +
>> DEFINE_RING_TYPES(vscsiif, struct vscsiif_request, struct vscsiif_response);
>> 
>> 
>> -- 
>> 2.34.1
Juergen Gross March 23, 2022, 12:12 p.m. UTC | #3
On 23.03.22 12:10, Luca Fancellu wrote:
> 
> 
>> On 23 Mar 2022, at 08:58, Juergen Gross <jgross@suse.com> wrote:
>>
>> The result field of struct vscsiif_response is lacking a detailed
>> definition. Today the Linux kernel internal scsi definitions are being
>> used, which is not a sane interface for a PV device driver.
>>
>> Add macros to change that by using today's values in the XEN namespace.
>>
>> Signed-off-by: Juergen Gross <jgross@suse.com>
>> ---
>> V2:
>> - put macro parameters in parentheses (Jan Beulich)
>> - correct XEN_VSCSIIF_RSLT_HOST() (Jan Beulich)
>> - more verbose result defines (Jan Beulich)
>> - add reset result defines (Jan Beulich)
>> ---
>> xen/include/public/io/vscsiif.h | 51 +++++++++++++++++++++++++++++++++
>> 1 file changed, 51 insertions(+)
>>
>> diff --git a/xen/include/public/io/vscsiif.h b/xen/include/public/io/vscsiif.h
>> index c9ceb1884d..8553b17cc6 100644
>> --- a/xen/include/public/io/vscsiif.h
>> +++ b/xen/include/public/io/vscsiif.h
>> @@ -315,6 +315,57 @@ struct vscsiif_response {
>> };
>> typedef struct vscsiif_response vscsiif_response_t;
>>
>> +/* SCSI I/O status from vscsiif_response->rslt */
>> +#define XEN_VSCSIIF_RSLT_STATUS(x)  ((x) & 0x00ff)
>> +
>> +/* Host I/O status from vscsiif_response->rslt */
>> +#define XEN_VSCSIIF_RSLT_HOST(x)    (((x) & 0x00ff0000) >> 16)
>> +#define XEN_VSCSIIF_RSLT_HOST_OK                   0
>> +/* Couldn't connect before timeout */
>> +#define XEN_VSCSIIF_RSLT_HOST_NO_CONNECT           1
>> +/* Bus busy through timeout */
>> +#define XEN_VSCSIIF_RSLT_HOST_BUS_BUSY             2
>> +/* Timed out for other reason */
>> +#define XEN_VSCSIIF_RSLT_HOST_TIME_OUT             3
>> +/* Bad target */
>> +#define XEN_VSCSIIF_RSLT_HOST_BAD_TARGET           4
>> +/* Abort for some other reason */
>> +#define XEN_VSCSIIF_RSLT_HOST_ABORT                5
>> +/* Parity error */
>> +#define XEN_VSCSIIF_RSLT_HOST_PARITY               6
>> +/* Internal error */
>> +#define XEN_VSCSIIF_RSLT_HOST_ERROR                7
>> +/* Reset by somebody */
>> +#define XEN_VSCSIIF_RSLT_HOST_RESET                8
>> +/* Unexpected interrupt */
>> +#define XEN_VSCSIIF_RSLT_HOST_BAD_INTR             9
>> +/* Force command past mid-layer */
>> +#define XEN_VSCSIIF_RSLT_HOST_PASSTHROUGH         10
>> +/* Retry requested */
>> +#define XEN_VSCSIIF_RSLT_HOST_SOFT_ERROR          11
>> +/* Hidden retry requested */
>> +#define XEN_VSCSIIF_RSLT_HOST_IMM_RETRY           12
>> +/* Requeue command requested */
>> +#define XEN_VSCSIIF_RSLT_HOST_REQUEUE             13
>> +/* Transport error disrupted I/O */
>> +#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_DISRUPTED 14
>> +/* Transport class fastfailed */
>> +#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_FAILFAST  15
>> +/* Permanent target failure */
>> +#define XEN_VSCSIIF_RSLT_HOST_TARGET_FAILURE      16
>> +/* Permanent nexus failure on path */
>> +#define XEN_VSCSIIF_RSLT_HOST_NEXUS_FAILURE       17
>> +/* Space allocation on device failed */
>> +#define XEN_VSCSIIF_RSLT_HOST_ALLOC_FAILURE       18
>> +/* Medium error */
>> +#define XEN_VSCSIIF_RSLT_HOST_MEDIUM_ERROR        19
>> +/* Transport marginal errors */
>> +#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_MARGINAL  20
> 
> Hi Juergen,
> 
> Would it makes sense to define the values in hex like in include/scsi/scsi_status.h
> so that they are more easy to compare?

They are not meant to be compared, even if they have (today) the same
value.

> 
> However this looks good to me,
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Thanks,


Juergen
Juergen Gross March 23, 2022, 12:13 p.m. UTC | #4
On 23.03.22 12:22, Luca Fancellu wrote:
> 
> 
>> On 23 Mar 2022, at 11:10, Luca Fancellu <Luca.Fancellu@arm.com> wrote:
>>
>>
>>
>>> On 23 Mar 2022, at 08:58, Juergen Gross <jgross@suse.com> wrote:
>>>
>>> The result field of struct vscsiif_response is lacking a detailed
>>> definition. Today the Linux kernel internal scsi definitions are being
>>> used, which is not a sane interface for a PV device driver.
>>>
>>> Add macros to change that by using today's values in the XEN namespace.
>>>
>>> Signed-off-by: Juergen Gross <jgross@suse.com>
>>> ---
>>> V2:
>>> - put macro parameters in parentheses (Jan Beulich)
>>> - correct XEN_VSCSIIF_RSLT_HOST() (Jan Beulich)
>>> - more verbose result defines (Jan Beulich)
>>> - add reset result defines (Jan Beulich)
>>> ---
>>> xen/include/public/io/vscsiif.h | 51 +++++++++++++++++++++++++++++++++
>>> 1 file changed, 51 insertions(+)
>>>
>>> diff --git a/xen/include/public/io/vscsiif.h b/xen/include/public/io/vscsiif.h
>>> index c9ceb1884d..8553b17cc6 100644
>>> --- a/xen/include/public/io/vscsiif.h
>>> +++ b/xen/include/public/io/vscsiif.h
>>> @@ -315,6 +315,57 @@ struct vscsiif_response {
>>> };
>>> typedef struct vscsiif_response vscsiif_response_t;
>>>
>>> +/* SCSI I/O status from vscsiif_response->rslt */
>>> +#define XEN_VSCSIIF_RSLT_STATUS(x)  ((x) & 0x00ff)
> 
> Sorry Juergen,
> 
> A thing came to me after sending my first message, is XEN_VSCSIIF_RSLT_STATUS meant
> to be used to compare the result with XEN_VSCSIIF_RSLT_RESET_SUCCESS or
> XEN_VSCSIIF_RSLT_RESET_FAILED?

No.

XEN_VSCSIIF_RSLT_RESET_* are meant to be compared with vscsiif_response->rslt.


Juergen
Juergen Gross April 19, 2022, 8:34 a.m. UTC | #5
Ping?

On 23.03.22 09:58, Juergen Gross wrote:
> The result field of struct vscsiif_response is lacking a detailed
> definition. Today the Linux kernel internal scsi definitions are being
> used, which is not a sane interface for a PV device driver.
> 
> Add macros to change that by using today's values in the XEN namespace.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
> V2:
> - put macro parameters in parentheses (Jan Beulich)
> - correct XEN_VSCSIIF_RSLT_HOST() (Jan Beulich)
> - more verbose result defines (Jan Beulich)
> - add reset result defines (Jan Beulich)
> ---
>   xen/include/public/io/vscsiif.h | 51 +++++++++++++++++++++++++++++++++
>   1 file changed, 51 insertions(+)
> 
> diff --git a/xen/include/public/io/vscsiif.h b/xen/include/public/io/vscsiif.h
> index c9ceb1884d..8553b17cc6 100644
> --- a/xen/include/public/io/vscsiif.h
> +++ b/xen/include/public/io/vscsiif.h
> @@ -315,6 +315,57 @@ struct vscsiif_response {
>   };
>   typedef struct vscsiif_response vscsiif_response_t;
>   
> +/* SCSI I/O status from vscsiif_response->rslt */
> +#define XEN_VSCSIIF_RSLT_STATUS(x)  ((x) & 0x00ff)
> +
> +/* Host I/O status from vscsiif_response->rslt */
> +#define XEN_VSCSIIF_RSLT_HOST(x)    (((x) & 0x00ff0000) >> 16)
> +#define XEN_VSCSIIF_RSLT_HOST_OK                   0
> +/* Couldn't connect before timeout */
> +#define XEN_VSCSIIF_RSLT_HOST_NO_CONNECT           1
> +/* Bus busy through timeout */
> +#define XEN_VSCSIIF_RSLT_HOST_BUS_BUSY             2
> +/* Timed out for other reason */
> +#define XEN_VSCSIIF_RSLT_HOST_TIME_OUT             3
> +/* Bad target */
> +#define XEN_VSCSIIF_RSLT_HOST_BAD_TARGET           4
> +/* Abort for some other reason */
> +#define XEN_VSCSIIF_RSLT_HOST_ABORT                5
> +/* Parity error */
> +#define XEN_VSCSIIF_RSLT_HOST_PARITY               6
> +/* Internal error */
> +#define XEN_VSCSIIF_RSLT_HOST_ERROR                7
> +/* Reset by somebody */
> +#define XEN_VSCSIIF_RSLT_HOST_RESET                8
> +/* Unexpected interrupt */
> +#define XEN_VSCSIIF_RSLT_HOST_BAD_INTR             9
> +/* Force command past mid-layer */
> +#define XEN_VSCSIIF_RSLT_HOST_PASSTHROUGH         10
> +/* Retry requested */
> +#define XEN_VSCSIIF_RSLT_HOST_SOFT_ERROR          11
> +/* Hidden retry requested */
> +#define XEN_VSCSIIF_RSLT_HOST_IMM_RETRY           12
> +/* Requeue command requested */
> +#define XEN_VSCSIIF_RSLT_HOST_REQUEUE             13
> +/* Transport error disrupted I/O */
> +#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_DISRUPTED 14
> +/* Transport class fastfailed */
> +#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_FAILFAST  15
> +/* Permanent target failure */
> +#define XEN_VSCSIIF_RSLT_HOST_TARGET_FAILURE      16
> +/* Permanent nexus failure on path */
> +#define XEN_VSCSIIF_RSLT_HOST_NEXUS_FAILURE       17
> +/* Space allocation on device failed */
> +#define XEN_VSCSIIF_RSLT_HOST_ALLOC_FAILURE       18
> +/* Medium error */
> +#define XEN_VSCSIIF_RSLT_HOST_MEDIUM_ERROR        19
> +/* Transport marginal errors */
> +#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_MARGINAL  20
> +
> +/* Result values of reset operations */
> +#define XEN_VSCSIIF_RSLT_RESET_SUCCESS  0x2002
> +#define XEN_VSCSIIF_RSLT_RESET_FAILED   0x2003
> +
>   DEFINE_RING_TYPES(vscsiif, struct vscsiif_request, struct vscsiif_response);
>   
>
Jan Beulich April 19, 2022, 9:24 a.m. UTC | #6
On 19.04.2022 10:34, Juergen Gross wrote:
> Ping?

Actually this patch is ready for committing - you have got an R-b already.
I merely failed to tag it as such in my respective folder, and hence I've
overlooked it during earlier commit swipes. Will include it next time
round.

Jan
diff mbox series

Patch

diff --git a/xen/include/public/io/vscsiif.h b/xen/include/public/io/vscsiif.h
index c9ceb1884d..8553b17cc6 100644
--- a/xen/include/public/io/vscsiif.h
+++ b/xen/include/public/io/vscsiif.h
@@ -315,6 +315,57 @@  struct vscsiif_response {
 };
 typedef struct vscsiif_response vscsiif_response_t;
 
+/* SCSI I/O status from vscsiif_response->rslt */
+#define XEN_VSCSIIF_RSLT_STATUS(x)  ((x) & 0x00ff)
+
+/* Host I/O status from vscsiif_response->rslt */
+#define XEN_VSCSIIF_RSLT_HOST(x)    (((x) & 0x00ff0000) >> 16)
+#define XEN_VSCSIIF_RSLT_HOST_OK                   0
+/* Couldn't connect before timeout */
+#define XEN_VSCSIIF_RSLT_HOST_NO_CONNECT           1
+/* Bus busy through timeout */
+#define XEN_VSCSIIF_RSLT_HOST_BUS_BUSY             2
+/* Timed out for other reason */
+#define XEN_VSCSIIF_RSLT_HOST_TIME_OUT             3
+/* Bad target */
+#define XEN_VSCSIIF_RSLT_HOST_BAD_TARGET           4
+/* Abort for some other reason */
+#define XEN_VSCSIIF_RSLT_HOST_ABORT                5
+/* Parity error */
+#define XEN_VSCSIIF_RSLT_HOST_PARITY               6
+/* Internal error */
+#define XEN_VSCSIIF_RSLT_HOST_ERROR                7
+/* Reset by somebody */
+#define XEN_VSCSIIF_RSLT_HOST_RESET                8
+/* Unexpected interrupt */
+#define XEN_VSCSIIF_RSLT_HOST_BAD_INTR             9
+/* Force command past mid-layer */
+#define XEN_VSCSIIF_RSLT_HOST_PASSTHROUGH         10
+/* Retry requested */
+#define XEN_VSCSIIF_RSLT_HOST_SOFT_ERROR          11
+/* Hidden retry requested */
+#define XEN_VSCSIIF_RSLT_HOST_IMM_RETRY           12
+/* Requeue command requested */
+#define XEN_VSCSIIF_RSLT_HOST_REQUEUE             13
+/* Transport error disrupted I/O */
+#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_DISRUPTED 14
+/* Transport class fastfailed */
+#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_FAILFAST  15
+/* Permanent target failure */
+#define XEN_VSCSIIF_RSLT_HOST_TARGET_FAILURE      16
+/* Permanent nexus failure on path */
+#define XEN_VSCSIIF_RSLT_HOST_NEXUS_FAILURE       17
+/* Space allocation on device failed */
+#define XEN_VSCSIIF_RSLT_HOST_ALLOC_FAILURE       18
+/* Medium error */
+#define XEN_VSCSIIF_RSLT_HOST_MEDIUM_ERROR        19
+/* Transport marginal errors */
+#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_MARGINAL  20
+
+/* Result values of reset operations */
+#define XEN_VSCSIIF_RSLT_RESET_SUCCESS  0x2002
+#define XEN_VSCSIIF_RSLT_RESET_FAILED   0x2003
+
 DEFINE_RING_TYPES(vscsiif, struct vscsiif_request, struct vscsiif_response);