Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12:Update
sg3_utils.1394
Interpret-DID_NEXUS_FAILURE-as-reservation-conf...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File Interpret-DID_NEXUS_FAILURE-as-reservation-conflict.patch of Package sg3_utils.1394
From 33b06761c91ede70fff0dcc724d0f27305587806 Mon Sep 17 00:00:00 2001 From: Hannes Reinecke <hare@suse.de> Date: Fri, 29 May 2015 12:18:37 +0200 Subject: [PATCH] Interpret DID_NEXUS_FAILURE as 'reservation conflict' As reservation conflict doesn't necessarily show up as a scsi cdb error, it might also end up as a 'DID_NEXUS_FAILURE' in the scsi command result host_byte. References: bsc#903332 Signed-off-by: Hannes Reinecke <hare@suse.de> --- include/sg_lib.h | 1 + lib/sg_cmds_basic.c | 8 ++------ lib/sg_io_linux.c | 2 ++ 3 files changed, 5 insertions(+), 6 deletions(-) --- a/include/sg_lib.h +++ b/include/sg_lib.h @@ -254,6 +254,7 @@ void sg_print_scsi_status(int scsi_statu /* [sk,asc,ascq: 0x0,*,*] */ #define SG_LIB_CAT_RECOVERED 21 /* Successful command after recovered err */ /* [sk,asc,ascq: 0x1,*,*] */ +#define SG_LIB_CAT_RES_CONFLICT SAM_STAT_RESERVATION_CONFLICT #define SG_LIB_CAT_MALFORMED 97 /* Response to SCSI command malformed */ #define SG_LIB_CAT_SENSE 98 /* Something else is in the sense buffer */ #define SG_LIB_CAT_OTHER 99 /* Some other error/warning has occurred */ --- a/lib/sg_cmds_basic.c +++ b/lib/sg_cmds_basic.c @@ -200,12 +200,8 @@ sg_cmds_process_resp(struct sg_pt_base * get_scsi_pt_transport_err_str(ptvp, sizeof(b), b); fprintf(sg_warnings_strm, "%s: transport: %s\n", leadin, b); } - if ((SAM_STAT_CHECK_CONDITION == get_scsi_pt_status_response(ptvp)) - && (slen > 0)) - return sg_cmds_process_helper(leadin, mx_di_len, resid, sbp, - slen, noisy, verbose, o_sense_cat); - else - return -1; + return sg_cmds_process_helper(leadin, mx_di_len, resid, sbp, + slen, noisy, verbose, o_sense_cat); case SCSI_PT_RESULT_OS_ERR: if (verbose || noisy) { get_scsi_pt_os_err_str(ptvp, sizeof(b), b); --- a/lib/sg_io_linux.c +++ b/lib/sg_io_linux.c @@ -229,6 +229,8 @@ sg_err_category_new(int scsi_status, int (SG_LIB_DID_BUS_BUSY == host_status) || (SG_LIB_DID_TIME_OUT == host_status)) return SG_LIB_CAT_TIMEOUT; + if (SG_LIB_DID_NEXUS_FAILURE == host_status) + return SG_LIB_CAT_RES_CONFLICT; } if (SG_LIB_DRIVER_TIMEOUT == masked_driver_status) return SG_LIB_CAT_TIMEOUT;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor