aboutsummaryrefslogtreecommitdiff
path: root/lib/sg_cmds_mmc.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sg_cmds_mmc.c')
-rw-r--r--lib/sg_cmds_mmc.c36
1 files changed, 24 insertions, 12 deletions
diff --git a/lib/sg_cmds_mmc.c b/lib/sg_cmds_mmc.c
index c1dabd74..e3629559 100644
--- a/lib/sg_cmds_mmc.c
+++ b/lib/sg_cmds_mmc.c
@@ -84,9 +84,12 @@ sg_ll_set_cd_speed(int sg_fd, int rot_control, int drv_read_speed,
set_scsi_pt_sense(ptvp, sense_b, sizeof(sense_b));
res = do_scsi_pt(ptvp, sg_fd, DEF_PT_TIMEOUT, verbose);
ret = sg_cmds_process_resp(ptvp, cdb_s, res, noisy, verbose, &sense_cat);
- if (-1 == ret)
- ret = sg_convert_errno(get_scsi_pt_os_err(ptvp));
- else if (-2 == ret) {
+ if (-1 == ret) {
+ if (get_scsi_pt_transport_err(ptvp))
+ ret = SG_LIB_TRANSPORT_ERROR;
+ else
+ ret = sg_convert_errno(get_scsi_pt_os_err(ptvp));
+ } else if (-2 == ret) {
switch (sense_cat) {
case SG_LIB_CAT_NOT_READY:
case SG_LIB_CAT_UNIT_ATTENTION:
@@ -157,9 +160,12 @@ sg_ll_get_config(int sg_fd, int rt, int starting, void * resp,
set_scsi_pt_data_in(ptvp, (uint8_t *)resp, mx_resp_len);
res = do_scsi_pt(ptvp, sg_fd, DEF_PT_TIMEOUT, verbose);
ret = sg_cmds_process_resp(ptvp, cdb_s, res, noisy, verbose, &sense_cat);
- if (-1 == ret)
- ret = sg_convert_errno(get_scsi_pt_os_err(ptvp));
- else if (-2 == ret) {
+ if (-1 == ret) {
+ if (get_scsi_pt_transport_err(ptvp))
+ ret = SG_LIB_TRANSPORT_ERROR;
+ else
+ ret = sg_convert_errno(get_scsi_pt_os_err(ptvp));
+ } else if (-2 == ret) {
switch (sense_cat) {
case SG_LIB_CAT_INVALID_OP:
case SG_LIB_CAT_ILLEGAL_REQ:
@@ -250,9 +256,12 @@ sg_ll_get_performance(int sg_fd, int data_type, unsigned int starting_lba,
set_scsi_pt_data_in(ptvp, (uint8_t *)resp, mx_resp_len);
res = do_scsi_pt(ptvp, sg_fd, DEF_PT_TIMEOUT, verbose);
ret = sg_cmds_process_resp(ptvp, cdb_s, res, noisy, verbose, &sense_cat);
- if (-1 == ret)
- ret = sg_convert_errno(get_scsi_pt_os_err(ptvp));
- else if (-2 == ret) {
+ if (-1 == ret) {
+ if (get_scsi_pt_transport_err(ptvp))
+ ret = SG_LIB_TRANSPORT_ERROR;
+ else
+ ret = sg_convert_errno(get_scsi_pt_os_err(ptvp));
+ } else if (-2 == ret) {
switch (sense_cat) {
case SG_LIB_CAT_INVALID_OP:
case SG_LIB_CAT_ILLEGAL_REQ:
@@ -332,9 +341,12 @@ sg_ll_set_streaming(int sg_fd, int type, void * paramp, int param_len,
set_scsi_pt_data_out(ptvp, (uint8_t *)paramp, param_len);
res = do_scsi_pt(ptvp, sg_fd, DEF_PT_TIMEOUT, verbose);
ret = sg_cmds_process_resp(ptvp, cdb_s, res, noisy, verbose, &sense_cat);
- if (-1 == ret)
- ret = sg_convert_errno(get_scsi_pt_os_err(ptvp));
- else if (-2 == ret) {
+ if (-1 == ret) {
+ if (get_scsi_pt_transport_err(ptvp))
+ ret = SG_LIB_TRANSPORT_ERROR;
+ else
+ ret = sg_convert_errno(get_scsi_pt_os_err(ptvp));
+ } else if (-2 == ret) {
switch (sense_cat) {
case SG_LIB_CAT_NOT_READY:
case SG_LIB_CAT_INVALID_OP: