Browse Source

ub: Tune retries

Make ub to fail faster in hopeless cases.

Signed-off-by: Pete Zaitcev <zaitcev@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Pete Zaitcev 17 years ago
parent
commit
82fe26ba7a
1 changed files with 4 additions and 5 deletions
  1. 4 5
      drivers/block/ub.c

+ 4 - 5
drivers/block/ub.c

@@ -792,10 +792,6 @@ static void ub_rw_cmd_done(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
 			scsi_status = 0;
 			scsi_status = 0;
 		} else {
 		} else {
 			if (cmd->act_len != cmd->len) {
 			if (cmd->act_len != cmd->len) {
-				if ((cmd->key == MEDIUM_ERROR ||
-				     cmd->key == UNIT_ATTENTION) &&
-				    ub_rw_cmd_retry(sc, lun, urq, cmd) == 0)
-					return;
 				scsi_status = SAM_STAT_CHECK_CONDITION;
 				scsi_status = SAM_STAT_CHECK_CONDITION;
 			} else {
 			} else {
 				scsi_status = 0;
 				scsi_status = 0;
@@ -811,7 +807,10 @@ static void ub_rw_cmd_done(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
 			else
 			else
 				scsi_status = DID_ERROR << 16;
 				scsi_status = DID_ERROR << 16;
 		} else {
 		} else {
-			if (cmd->error == -EIO) {
+			if (cmd->error == -EIO &&
+			    (cmd->key == 0 ||
+			     cmd->key == MEDIUM_ERROR ||
+			     cmd->key == UNIT_ATTENTION)) {
 				if (ub_rw_cmd_retry(sc, lun, urq, cmd) == 0)
 				if (ub_rw_cmd_retry(sc, lun, urq, cmd) == 0)
 					return;
 					return;
 			}
 			}