+ int rc;
+
+ /* Clear sense response code before issuing command */
+ command->sense_response = 0;
+
+ /* Issue SCSI command */
+ if ( ( rc = scsi->command ( scsi, command ) ) != 0 ) {
+ /* Something went wrong with the issuing mechanism,
+ * (rather than with the command itself)
+ */
+ DBG ( "SCSI %p " SCSI_CDB_FORMAT " err %d\n",
+ scsi, SCSI_CDB_DATA ( command->cdb ), rc );
+ return rc;
+ }
+
+ /* Check for SCSI errors */
+ if ( command->status != 0 ) {
+ DBG ( "SCSI %p " SCSI_CDB_FORMAT " status %02x sense %02x\n",
+ scsi, SCSI_CDB_DATA ( command->cdb ),
+ command->status, command->sense_response );
+ return -EIO;
+ }
+
+ return 0;