sg_zone.c (sg3_utils-1.47r908.tgz) | : | sg_zone.c (sg3_utils-1.47r915.tar.xz) | ||
---|---|---|---|---|
skipping to change at line 40 | skipping to change at line 40 | |||
#include "sg_unaligned.h" | #include "sg_unaligned.h" | |||
#include "sg_pr2serr.h" | #include "sg_pr2serr.h" | |||
/* A utility program originally written for the Linux OS SCSI subsystem. | /* A utility program originally written for the Linux OS SCSI subsystem. | |||
* | * | |||
* | * | |||
* This program issues a SCSI CLOSE ZONE, FINISH ZONE or OPEN ZONE command | * This program issues a SCSI CLOSE ZONE, FINISH ZONE or OPEN ZONE command | |||
* to the given SCSI device. Based on zbc-r04c.pdf . | * to the given SCSI device. Based on zbc-r04c.pdf . | |||
*/ | */ | |||
static const char * version_str = "1.15 20210122"; | static const char * version_str = "1.16 20210830"; | |||
#define SG_ZONING_OUT_CMDLEN 16 | #define SG_ZONING_OUT_CMDLEN 16 | |||
#define CLOSE_ZONE_SA 0x1 | #define CLOSE_ZONE_SA 0x1 | |||
#define FINISH_ZONE_SA 0x2 | #define FINISH_ZONE_SA 0x2 | |||
#define OPEN_ZONE_SA 0x3 | #define OPEN_ZONE_SA 0x3 | |||
#define SEQUENTIALIZE_ZONE_SA 0x10 | #define SEQUENTIALIZE_ZONE_SA 0x10 | |||
#define REM_ELEM_MOD_ZONES_SA 0x1a /* uses SERVICE ACTION IN(16) */ | #define REM_ELEM_MOD_ZONES_SA 0x1a /* uses SERVICE ACTION IN(16) */ | |||
#define SENSE_BUFF_LEN 64 /* Arbitrary, could be larger */ | #define SENSE_BUFF_LEN 64 /* Arbitrary, could be larger */ | |||
#define DEF_PT_TIMEOUT 60 /* 60 seconds */ | #define DEF_PT_TIMEOUT 60 /* 60 seconds */ | |||
skipping to change at line 72 | skipping to change at line 72 | |||
{"reset_all", no_argument, 0, 'R'}, | {"reset_all", no_argument, 0, 'R'}, | |||
{"sequentialize", no_argument, 0, 'S'}, | {"sequentialize", no_argument, 0, 'S'}, | |||
{"verbose", no_argument, 0, 'v'}, | {"verbose", no_argument, 0, 'v'}, | |||
{"version", no_argument, 0, 'V'}, | {"version", no_argument, 0, 'V'}, | |||
{"zone", required_argument, 0, 'z'}, | {"zone", required_argument, 0, 'z'}, | |||
{0, 0, 0, 0}, | {0, 0, 0, 0}, | |||
}; | }; | |||
/* Indexed by service action */ | /* Indexed by service action */ | |||
static const char * sa_name_arr[] = { | static const char * sa_name_arr[] = { | |||
"no SA=0", /* 0x0 */ | "no SA=0", /* 0x0 */ | |||
"Close zone", | "Close zone", | |||
"Finish zone", | "Finish zone", | |||
"Open zone", | "Open zone", | |||
"-", "-", "-", "-", | "-", "-", "-", "-", | |||
"Zone activate", /* 0x8 */ | "Zone activate", /* 0x8 */ | |||
"-", "-", "-", "-", | "-", "-", "-", "-", | |||
"-", | "-", | |||
"-", | "-", | |||
"-", | "-", | |||
"Sequentialize zone", /* 0x10 */ | "Sequentialize zone", /* 0x10 */ | |||
skipping to change at line 166 | skipping to change at line 166 | |||
ptvp = construct_scsi_pt_obj(); | ptvp = construct_scsi_pt_obj(); | |||
if (NULL == ptvp) { | if (NULL == ptvp) { | |||
pr2serr("%s: out of memory\n", b); | pr2serr("%s: out of memory\n", b); | |||
return -1; | return -1; | |||
} | } | |||
set_scsi_pt_cdb(ptvp, zo_cdb, sizeof(zo_cdb)); | set_scsi_pt_cdb(ptvp, zo_cdb, sizeof(zo_cdb)); | |||
set_scsi_pt_sense(ptvp, sense_b, sizeof(sense_b)); | set_scsi_pt_sense(ptvp, sense_b, sizeof(sense_b)); | |||
res = do_scsi_pt(ptvp, sg_fd, DEF_PT_TIMEOUT, verbose); | res = do_scsi_pt(ptvp, sg_fd, DEF_PT_TIMEOUT, verbose); | |||
ret = sg_cmds_process_resp(ptvp, b, res, noisy, | ret = sg_cmds_process_resp(ptvp, b, res, noisy, | |||
verbose, &sense_cat); | verbose, &sense_cat); | |||
if (-1 == ret) | if (-1 == ret) { | |||
ret = sg_convert_errno(get_scsi_pt_os_err(ptvp)); | if (get_scsi_pt_transport_err(ptvp)) | |||
else if (-2 == ret) { | ret = SG_LIB_TRANSPORT_ERROR; | |||
else | ||||
ret = sg_convert_errno(get_scsi_pt_os_err(ptvp)); | ||||
} else if (-2 == ret) { | ||||
switch (sense_cat) { | switch (sense_cat) { | |||
case SG_LIB_CAT_RECOVERED: | case SG_LIB_CAT_RECOVERED: | |||
case SG_LIB_CAT_NO_SENSE: | case SG_LIB_CAT_NO_SENSE: | |||
ret = 0; | ret = 0; | |||
break; | break; | |||
default: | default: | |||
ret = sense_cat; | ret = sense_cat; | |||
break; | break; | |||
} | } | |||
} else | } else | |||
End of changes. 3 change blocks. | ||||
5 lines changed or deleted | 8 lines changed or added |