hdr->device_status = sreq->result & 0xff;
        hdr->transport_status = host_byte(sreq->result);
        hdr->driver_status = driver_byte(sreq->result);
+       if (scsi_status_is_check_condition(sreq->result))
+               hdr->driver_status = DRIVER_SENSE;
        hdr->info = 0;
        if (hdr->device_status || hdr->transport_status || hdr->driver_status)
                hdr->info |= SG_INFO_CHECK;
 
        hdr->msg_status = msg_byte(req->result);
        hdr->host_status = host_byte(req->result);
        hdr->driver_status = driver_byte(req->result);
+       if (scsi_status_is_check_condition(hdr->status))
+               hdr->driver_status = DRIVER_SENSE;
        hdr->info = 0;
        if (hdr->masked_status || hdr->host_status || hdr->driver_status)
                hdr->info |= SG_INFO_CHECK;
 
                rc = cmd_result;
                goto error;
        }
-       if (driver_byte(cmd_result) == DRIVER_SENSE) {/* sense data available */
+       if (scsi_sense_valid(&sshdr)) {/* sense data available */
                u8 *desc = sensebuf + 8;
-               cmd_result &= ~(0xFF<<24); /* DRIVER_SENSE is not an error */
 
                /* If we set cc then ATA pass-through will cause a
                 * check condition even if no error. Filter that. */
-               if (cmd_result & SAM_STAT_CHECK_CONDITION) {
+               if (scsi_status_is_check_condition(cmd_result)) {
                        if (sshdr.sense_key == RECOVERED_ERROR &&
                            sshdr.asc == 0 && sshdr.ascq == 0x1d)
                                cmd_result &= ~SAM_STAT_CHECK_CONDITION;
                rc = cmd_result;
                goto error;
        }
-       if (driver_byte(cmd_result) == DRIVER_SENSE) {/* sense data available */
+       if (scsi_sense_valid(&sshdr)) {/* sense data available */
                u8 *desc = sensebuf + 8;
-               cmd_result &= ~(0xFF<<24); /* DRIVER_SENSE is not an error */
 
                /* If we set cc then ATA pass-through will cause a
                 * check condition even if no error. Filter that. */
 
        memset(sb, 0, SCSI_SENSE_BUFFERSIZE);
 
-       cmd->result = (DRIVER_SENSE << 24) | SAM_STAT_CHECK_CONDITION;
-
        /*
         * Use ata_to_sense_error() to map status register bits
         * onto sense key, asc & ascq.
 
        memset(sb, 0, SCSI_SENSE_BUFFERSIZE);
 
-       cmd->result = (DRIVER_SENSE << 24) | SAM_STAT_CHECK_CONDITION;
-
        if (ata_dev_disabled(dev)) {
                /* Device disabled after error recovery */
                /* LOGICAL UNIT NOT READY, HARD RESET REQUIRED */
 
        case REQUEST_SENSE:
                ata_scsi_set_sense(dev, cmd, 0, 0, 0);
-               cmd->result = (DRIVER_SENSE << 24);
                break;
 
        /* if we reach this, then writeback caching is disabled,
 
                        scsi_eh_restore_cmnd(cmd, &hostdata->ses);
                } else {
                        scsi_eh_restore_cmnd(cmd, &hostdata->ses);
-                       set_driver_byte(cmd, DRIVER_SENSE);
+                       set_status_byte(cmd, SAM_STAT_CHECK_CONDITION);
                }
                hostdata->sensing = NULL;
        }
 
                                ASC_DBG(2, "SAM_STAT_CHECK_CONDITION\n");
                                ASC_DBG_PRT_SENSE(2, scp->sense_buffer,
                                                  SCSI_SENSE_BUFFERSIZE);
-                               set_driver_byte(scp, DRIVER_SENSE);
                        }
                        break;
 
                                ASC_DBG(2, "SAM_STAT_CHECK_CONDITION\n");
                                ASC_DBG_PRT_SENSE(2, scp->sense_buffer,
                                                  SCSI_SENSE_BUFFERSIZE);
-                               set_driver_byte(scp, DRIVER_SENSE);
                        }
                        break;
 
 
                        memcpy(cmd->sense_buffer,
                               ahd_get_sense_buf(ahd, scb)
                               + sense_offset, sense_size);
-                       cmd->result |= (DRIVER_SENSE << 24);
+                       set_status_byte(cmd, SAM_STAT_CHECK_CONDITION);
 
 #ifdef AHD_DEBUG
                        if (ahd_debug & AHD_SHOW_SENSE) {
        int new_status = DID_OK;
        int do_fallback = 0;
        int scsi_status;
+       struct scsi_sense_data *sense;
 
        /*
         * Map CAM error codes into Linux Error codes.  We
                switch(scsi_status) {
                case SAM_STAT_COMMAND_TERMINATED:
                case SAM_STAT_CHECK_CONDITION:
-                       if ((cmd->result >> 24) != DRIVER_SENSE) {
+                       sense = (struct scsi_sense_data *)
+                               cmd->sense_buffer;
+                       if (sense->extra_len >= 5 &&
+                           (sense->add_sense_code == 0x47
+                            || sense->add_sense_code == 0x48))
                                do_fallback = 1;
-                       } else {
-                               struct scsi_sense_data *sense;
-                               
-                               sense = (struct scsi_sense_data *)
-                                       cmd->sense_buffer;
-                               if (sense->extra_len >= 5 &&
-                                   (sense->add_sense_code == 0x47
-                                    || sense->add_sense_code == 0x48))
-                                       do_fallback = 1;
-                       }
                        break;
                default:
                        break;
 
                        if (sense_size < SCSI_SENSE_BUFFERSIZE)
                                memset(&cmd->sense_buffer[sense_size], 0,
                                       SCSI_SENSE_BUFFERSIZE - sense_size);
-                       cmd->result |= (DRIVER_SENSE << 24);
 #ifdef AHC_DEBUG
                        if (ahc_debug & AHC_SHOW_SENSE) {
                                int i;
 
                memcpy(sensebuffer, ccb->arcmsr_cdb.SenseData, sense_data_length);
                sensebuffer->ErrorCode = SCSI_SENSE_CURRENT_ERRORS;
                sensebuffer->Valid = 1;
-               pcmd->result |= (DRIVER_SENSE << 24);
        }
 }
 
 
                                  MAX_RETRIES, NULL);
        if (result < 0)
                return result;
-       if (driver_byte(result) == DRIVER_SENSE) {
+       if (scsi_sense_valid(&sshdr)) {
                if (debug)
                        scsi_print_sense_hdr(ch->device, ch->name, &sshdr);
                errno = ch_find_errno(&sshdr);
 
                goto out;
        }
 
-       if (result > 0 && driver_byte(result) == DRIVER_SENSE) {
-               result &= ~(0xFF<<24); /* DRIVER_SENSE is not an error */
+       if (result > 0 && scsi_sense_valid(&sshdr)) {
                if (result & SAM_STAT_CHECK_CONDITION) {
                        switch (sshdr.sense_key) {
                        case NO_SENSE:
 
                }
                dprintkdbg(DBG_0, "srb_done: AUTO_REQSENSE2\n");
 
-               if (srb->total_xfer_length
-                   && srb->total_xfer_length >= cmd->underflow)
-                       cmd->result =
-                           MK_RES_LNX(DRIVER_SENSE, DID_OK,
-                                      srb->end_message, CHECK_CONDITION);
-               /*SET_RES_DID(cmd->result,DID_OK) */
-               else
-                       cmd->result =
-                           MK_RES_LNX(DRIVER_SENSE, DID_OK,
-                                      srb->end_message, CHECK_CONDITION);
+               cmd->result =
+                   MK_RES(0, DID_OK,
+                          srb->end_message, SAM_STAT_CHECK_CONDITION);
 
                goto ckc_e;
        }
 
                 * saw originally.  Also, report that we are providing
                 * the sense data.
                 */
-               cmd->result = ((DRIVER_SENSE << 24) |
-                              (DID_OK << 16) |
-                              (SAM_STAT_CHECK_CONDITION << 0));
+               cmd->result = SAM_STAT_CHECK_CONDITION;
 
                ent->flags &= ~ESP_CMD_FLAG_AUTOSENSE;
                if (esp_debug & ESP_DEBUG_AUTOSENSE) {
 
                                memcpy(cmd->sense_buffer, pthru->reqsensearea,
                                                14);
 
-                               cmd->result = (DRIVER_SENSE << 24) |
-                                       (DID_OK << 16) |
-                                       (CHECK_CONDITION << 1);
+                               cmd->result = SAM_STAT_CHECK_CONDITION;
                        }
                        else {
                                if (mbox->m_out.cmd == MEGA_MBOXCMD_EXTPTHRU) {
                                        memcpy(cmd->sense_buffer,
                                                epthru->reqsensearea, 14);
 
-                                       cmd->result = (DRIVER_SENSE << 24) |
-                                               (DID_OK << 16) |
-                                               (CHECK_CONDITION << 1);
+                                       cmd->result = SAM_STAT_CHECK_CONDITION;
                                } else
                                        scsi_build_sense(cmd, 0,
                                                         ABORTED_COMMAND, 0, 0);
 
                                memcpy(scp->sense_buffer, pthru->reqsensearea,
                                                14);
 
-                               scp->result = DRIVER_SENSE << 24 |
-                                       DID_OK << 16 | CHECK_CONDITION << 1;
+                               scp->result = SAM_STAT_CHECK_CONDITION;
                        }
                        else {
                                if (mbox->cmd == MBOXCMD_EXTPTHRU) {
                                        memcpy(scp->sense_buffer,
                                                epthru->reqsensearea, 14);
 
-                                       scp->result = DRIVER_SENSE << 24 |
-                                               DID_OK << 16 |
-                                               CHECK_CONDITION << 1;
+                                       scp->result = SAM_STAT_CHECK_CONDITION;
                                } else
                                        scsi_build_sense(scp, 0,
                                                         ABORTED_COMMAND, 0, 0);
 
                                       SCSI_SENSE_BUFFERSIZE);
                                memcpy(cmd->scmd->sense_buffer, cmd->sense,
                                       hdr->sense_len);
-
-                               cmd->scmd->result |= DRIVER_SENSE << 24;
                        }
 
                        break;
 
                               SCSI_SENSE_BUFFERSIZE);
                        memcpy(scmd->sense_buffer, sense,
                               SCSI_SENSE_BUFFERSIZE);
-                       scmd->result |= DRIVER_SENSE << 24;
                }
 
                /*
 
                if (ob_frame->rsp_flag & CL_RSP_FLAG_SENSEDATA) {
                        memcpy(cmd->scmd->sense_buffer, ob_frame->payload,
                                sizeof(struct mvumi_sense_data));
-                       scmd->result |=  (DRIVER_SENSE << 24);
                }
                break;
        default:
 
        if (atomic_read(&sdev->device_blocked))
                atomic_set(&sdev->device_blocked, 0);
 
-       /*
-        * If we have valid sense information, then some kind of recovery
-        * must have taken place.  Make a note of this.
-        */
-       if (SCSI_SENSE_VALID(cmd))
-               cmd->result |= (DRIVER_SENSE << 24);
-
        SCSI_LOG_MLCOMPLETE(4, sdev_printk(KERN_INFO, sdev,
                                "Notifying upper driver of completion "
                                "(result %x)\n", cmd->result));
 
 };
 
 static const int check_condition_result =
-               (DRIVER_SENSE << 24) | SAM_STAT_CHECK_CONDITION;
+       SAM_STAT_CHECK_CONDITION;
 
 static const int illegal_condition_result =
-       (DRIVER_SENSE << 24) | (DID_ABORT << 16) | SAM_STAT_CHECK_CONDITION;
+       (DID_ABORT << 16) | SAM_STAT_CHECK_CONDITION;
 
 static const int device_qfull_result =
        (DID_OK << 16) | SAM_STAT_TASK_SET_FULL;
 
 
        if (result < 0)
                goto out;
-       if (driver_byte(result) == DRIVER_SENSE &&
-           scsi_sense_valid(&sshdr)) {
+       if (scsi_sense_valid(&sshdr)) {
                switch (sshdr.sense_key) {
                case ILLEGAL_REQUEST:
                        if (cmd[0] == ALLOW_MEDIUM_REMOVAL)
 
        case DID_OK:
                /*
                 * Also check the other bytes than the status byte in result
-                * to handle the case when a SCSI LLD sets result to
-                * DRIVER_SENSE << 24 without setting SAM_STAT_CHECK_CONDITION.
                 */
                if (scsi_status_is_good(result) && (result & ~0xff) == 0)
                        return BLK_STS_OK;
                         */
                        if (!level && __ratelimit(&_rs)) {
                                scsi_print_result(cmd, NULL, FAILED);
-                               if (driver_byte(result) == DRIVER_SENSE)
+                               if (sense_valid)
                                        scsi_print_sense(cmd);
                                scsi_print_command(cmd);
                        }
         * ILLEGAL REQUEST if the code page isn't supported */
 
        if (!scsi_status_is_good(result)) {
-               if (driver_byte(result) == DRIVER_SENSE &&
-                   scsi_sense_valid(sshdr)) {
+               if (scsi_sense_valid(sshdr)) {
                        if ((sshdr->sense_key == ILLEGAL_REQUEST) &&
                            (sshdr->asc == 0x20) && (sshdr->ascq == 0)) {
                                /*
 void scsi_build_sense(struct scsi_cmnd *scmd, int desc, u8 key, u8 asc, u8 ascq)
 {
        scsi_build_sense_buffer(desc, scmd->sense_buffer, key, asc, ascq);
-       scmd->result = (DRIVER_SENSE << 24) | (DID_OK << 16) |
-               SAM_STAT_CHECK_CONDITION;
+       scmd->result = SAM_STAT_CHECK_CONDITION;
 }
 EXPORT_SYMBOL_GPL(scsi_build_sense);
 
                         * INQUIRY should not yield UNIT_ATTENTION
                         * but many buggy devices do so anyway. 
                         */
-                       if (driver_byte(result) == DRIVER_SENSE &&
+                       if (scsi_status_is_check_condition(result) &&
                            scsi_sense_valid(&sshdr)) {
                                if ((sshdr.sense_key == UNIT_ATTENTION) &&
                                    ((sshdr.asc == 0x28) ||
 
                                      REQ_FAILFAST_TRANSPORT |
                                      REQ_FAILFAST_DRIVER,
                                      RQF_PM, NULL);
-               if (result < 0 || driver_byte(result) != DRIVER_SENSE ||
+               if (result < 0 || !scsi_sense_valid(sshdr) ||
                    sshdr->sense_key != UNIT_ATTENTION)
                        break;
        }
 
                if (res < 0)
                        return res;
 
-               if (driver_byte(res) == DRIVER_SENSE)
+               if (scsi_status_is_check_condition(res) &&
+                   scsi_sense_valid(sshdr)) {
                        sd_print_sense_hdr(sdkp, sshdr);
 
-               /* we need to evaluate the error return  */
-               if (scsi_sense_valid(sshdr) &&
-                       (sshdr->asc == 0x3a ||  /* medium not present */
-                        sshdr->asc == 0x20 ||  /* invalid command */
-                        (sshdr->asc == 0x74 && sshdr->ascq == 0x71)))  /* drive is password locked */
+                       /* we need to evaluate the error return  */
+                       if (sshdr->asc == 0x3a ||       /* medium not present */
+                           sshdr->asc == 0x20 ||       /* invalid command */
+                           (sshdr->asc == 0x74 && sshdr->ascq == 0x71))        /* drive is password locked */
                                /* this is no error here */
                                return 0;
+               }
 
                switch (host_byte(res)) {
                /* ignore errors due to racing a disconnection */
        result = scsi_execute_req(sdev, cmd, DMA_TO_DEVICE, &data, sizeof(data),
                        &sshdr, SD_TIMEOUT, sdkp->max_retries, NULL);
 
-       if (result > 0 && driver_byte(result) == DRIVER_SENSE &&
+       if (scsi_status_is_check_condition(result) &&
            scsi_sense_valid(&sshdr)) {
                sdev_printk(KERN_INFO, sdev, "PR command failed: %d\n", result);
                scsi_print_sense_hdr(sdev, NULL, &sshdr);
        }
        sdkp->medium_access_timed_out = 0;
 
-       if (driver_byte(result) != DRIVER_SENSE &&
+       if (!scsi_status_is_check_condition(result) &&
            (!sense_valid || sense_deferred))
                goto out;
 
                        if (the_result)
                                sense_valid = scsi_sense_valid(&sshdr);
                        retries++;
-               } while (retries < 3 && 
+               } while (retries < 3 &&
                         (!scsi_status_is_good(the_result) ||
-                         ((driver_byte(the_result) == DRIVER_SENSE) &&
+                         (scsi_status_is_check_condition(the_result) &&
                          sense_valid && sshdr.sense_key == UNIT_ATTENTION)));
 
-               if (the_result < 0 || driver_byte(the_result) != DRIVER_SENSE) {
+               if (!scsi_status_is_check_condition(the_result)) {
                        /* no sense, TUR either succeeded or failed
                         * with a status error */
                        if(!spintime && !scsi_status_is_good(the_result)) {
                        struct scsi_sense_hdr *sshdr, int sense_valid,
                        int the_result)
 {
-       if (driver_byte(the_result) == DRIVER_SENSE)
+       if (sense_valid)
                sd_print_sense_hdr(sdkp, sshdr);
        else
                sd_printk(KERN_NOTICE, sdkp, "Sense not available.\n");
                        SD_TIMEOUT, sdkp->max_retries, 0, RQF_PM, NULL);
        if (res) {
                sd_print_result(sdkp, "Start/Stop Unit failed", res);
-               if (res > 0 && driver_byte(res) == DRIVER_SENSE)
+               if (res > 0 && scsi_sense_valid(&sshdr)) {
                        sd_print_sense_hdr(sdkp, &sshdr);
-               if (scsi_sense_valid(&sshdr) &&
                        /* 0x3a is medium not present */
-                       sshdr.asc == 0x3a)
-                       res = 0;
+                       if (sshdr.asc == 0x3a)
+                               res = 0;
+               }
        }
 
        /* SCSI error codes must not go to the generic layer */
 
                sd_printk(KERN_ERR, sdkp,
                          "REPORT ZONES start lba %llu failed\n", lba);
                sd_print_result(sdkp, "REPORT ZONES", result);
-               if (result > 0 && driver_byte(result) == DRIVER_SENSE &&
-                   scsi_sense_valid(&sshdr))
+               if (result > 0 && scsi_sense_valid(&sshdr))
                        sd_print_sense_hdr(sdkp, &sshdr);
                return -EIO;
        }
 
        old_hdr->host_status = hp->host_status;
        old_hdr->driver_status = hp->driver_status;
        if ((CHECK_CONDITION & hp->masked_status) ||
-           (DRIVER_SENSE & hp->driver_status))
+           (srp->sense_b[0] & 0x70) == 0x70) {
+               old_hdr->driver_status = DRIVER_SENSE;
                memcpy(old_hdr->sense_buffer, srp->sense_b,
                       sizeof (old_hdr->sense_buffer));
+       }
        switch (hp->host_status) {
        /* This setup of 'result' is for backward compatibility and is best
           ignored by the user who should use target, host + driver status */
        hp->sb_len_wr = 0;
        if ((hp->mx_sb_len > 0) && hp->sbp) {
                if ((CHECK_CONDITION & hp->masked_status) ||
-                   (DRIVER_SENSE & hp->driver_status)) {
+                   (srp->sense_b[0] & 0x70) == 0x70) {
                        int sb_len = SCSI_SENSE_BUFFERSIZE;
                        sb_len = (hp->mx_sb_len > sb_len) ? sb_len : hp->mx_sb_len;
                        len = 8 + (int) srp->sense_b[7];        /* Additional sense length field */
                                err = -EFAULT;
                                goto err_out;
                        }
+                       hp->driver_status = DRIVER_SENSE;
                        hp->sb_len_wr = len;
                }
        }
 
                        result |= DID_OK << 16;
                        break;
                case SAM_STAT_CHECK_CONDITION:
-                       result |= DRIVER_SENSE << 24;
+                       result |= DID_OK << 16;
                        break;
                case SAM_STAT_BUSY:
                        result |= DID_BUS_BUSY << 16;
                }
        }
        else if (ccb->srb_status & SRB_SEE_SENSE)
-               result = DRIVER_SENSE << 24 | SAM_STAT_CHECK_CONDITION;
+               result = SAM_STAT_CHECK_CONDITION;
        else switch (ccb->srb_status) {
                case SRB_STATUS_SELECTION_TIMEOUT:
                        result = DID_NO_CONNECT << 16;
 
 void sym_set_cam_result_error(struct sym_hcb *np, struct sym_ccb *cp, int resid)
 {
        struct scsi_cmnd *cmd = cp->cmd;
-       u_int cam_status, scsi_status, drv_status;
+       u_int cam_status, scsi_status;
 
-       drv_status  = 0;
        cam_status  = DID_OK;
        scsi_status = cp->ssss_status;
 
                    cp->xerr_status == 0) {
                        cam_status = sym_xerr_cam_status(DID_OK,
                                                         cp->sv_xerr_status);
-                       drv_status = DRIVER_SENSE;
                        /*
                         *  Bounce back the sense data to user.
                         */
                cam_status = sym_xerr_cam_status(DID_ERROR, cp->xerr_status);
        }
        scsi_set_resid(cmd, resid);
-       cmd->result = (drv_status << 24) | (cam_status << 16) | scsi_status;
+       cmd->result = (cam_status << 16) | scsi_status;
 }
 
 static int sym_scatter(struct sym_hcb *np, struct sym_ccb *cp, struct scsi_cmnd *cmd)
 
                sdev_printk(KERN_WARNING, sdp,
                            "START_STOP failed for power mode: %d, result %x\n",
                            pwr_mode, ret);
-               if (ret > 0 && driver_byte(ret) == DRIVER_SENSE)
+               if (ret > 0 && scsi_sense_valid(&sshdr))
                        scsi_print_sense_hdr(sdp, NULL, &sshdr);
        }
 
 
                       min_t(u32,
                             virtio32_to_cpu(vscsi->vdev, resp->sense_len),
                             VIRTIO_SCSI_SENSE_SIZE));
-               if (resp->sense_len)
-                       set_driver_byte(sc, DRIVER_SENSE);
+               set_status_byte(sc, SAM_STAT_CHECK_CONDITION);
        }
 
        sc->scsi_done(sc);
 
                        cmd->result = (DID_RESET << 16);
                } else {
                        cmd->result = (DID_OK << 16) | sdstat;
-                       if (sdstat == SAM_STAT_CHECK_CONDITION &&
-                           cmd->sense_buffer)
-                               cmd->result |= (DRIVER_SENSE << 24);
                }
        } else
                switch (btstat) {
 
                memcpy(sc->sense_buffer, se_cmd->sense_buffer,
                                SCSI_SENSE_BUFFERSIZE);
                sc->result = SAM_STAT_CHECK_CONDITION;
-               set_driver_byte(sc, DRIVER_SENSE);
        } else
                sc->result = scsi_status;
 
 
                desc[12] = regs[6];  /* device */
                desc[13] = regs[7];  /* command */
 
-               srb->result = (DRIVER_SENSE << 24) | SAM_STAT_CHECK_CONDITION;
+               srb->result = SAM_STAT_CHECK_CONDITION;
        }
        goto end;
 invalid_fld:
-       srb->result = (DRIVER_SENSE << 24) | SAM_STAT_CHECK_CONDITION;
+       srb->result = SAM_STAT_CHECK_CONDITION;
 
        memcpy(srb->sense_buffer,
                        usb_stor_sense_invalidCDB,
 
        if (se_cmd->sense_buffer &&
            ((se_cmd->se_cmd_flags & SCF_TRANSPORT_TASK_SENSE) ||
             (se_cmd->se_cmd_flags & SCF_EMULATED_TASK_SENSE)))
-               pending_req->result = (DRIVER_SENSE << 24) |
-                                     SAM_STAT_CHECK_CONDITION;
+               pending_req->result = SAM_STAT_CHECK_CONDITION;
        else
                pending_req->result = se_cmd->scsi_status;
 
 
 #define SG_INFO_DIRECT_IO 0x2   /* direct IO requested and performed */
 #define SG_INFO_MIXED_IO 0x4    /* part direct, part indirect IO */
 
+/*
+ * Obsolete DRIVER_SENSE driver byte
+ *
+ * Originally the SCSI midlayer would set the DRIVER_SENSE driver byte when
+ * a sense code was generated and a sense buffer was allocated.
+ * However, as nowadays every scsi command has a sense code allocated this
+ * distinction became moot as one could check the sense buffer directly.
+ * Consequently this byte is not set anymore from the midlayer, but SG will
+ * keep setting this byte to be compatible with previous releases.
+ */
+#define DRIVER_SENSE 0x08
 
 typedef struct sg_scsi_id { /* used by SG_GET_SCSI_ID ioctl() */
     int host_no;        /* as in "scsi<n>" where 'n' is one of 0, 1, 2 etc */