block: rename BLK_EH_NOT_HANDLED to BLK_EH_DONE
The BLK_EH_NOT_HANDLED implies nothing happen, but very often that is not what is happening - instead the driver already completed the command. Fix the symbolic name to reflect that a little better. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Hannes Reinecke <hare@suse.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
12f5b93145
commit
6600593cbd
|
@ -97,9 +97,9 @@ function
|
||||||
This indicates that more time is required to finish the
|
This indicates that more time is required to finish the
|
||||||
command. Timer is restarted. This action is counted as a
|
command. Timer is restarted. This action is counted as a
|
||||||
retry and only allowed scmd->allowed + 1(!) times. Once the
|
retry and only allowed scmd->allowed + 1(!) times. Once the
|
||||||
limit is reached, action for BLK_EH_NOT_HANDLED is taken instead.
|
limit is reached, action for BLK_EH_DONE is taken instead.
|
||||||
|
|
||||||
- BLK_EH_NOT_HANDLED
|
- BLK_EH_DONE
|
||||||
eh_timed_out() callback did not handle the command.
|
eh_timed_out() callback did not handle the command.
|
||||||
Step #2 is taken.
|
Step #2 is taken.
|
||||||
|
|
||||||
|
|
|
@ -784,7 +784,7 @@ static void blk_mq_rq_timed_out(struct request *req, bool reserved)
|
||||||
case BLK_EH_RESET_TIMER:
|
case BLK_EH_RESET_TIMER:
|
||||||
blk_add_timer(req);
|
blk_add_timer(req);
|
||||||
break;
|
break;
|
||||||
case BLK_EH_NOT_HANDLED:
|
case BLK_EH_DONE:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
printk(KERN_ERR "block: bad eh return: %d\n", ret);
|
printk(KERN_ERR "block: bad eh return: %d\n", ret);
|
||||||
|
|
|
@ -93,7 +93,7 @@ static void blk_rq_timed_out(struct request *req)
|
||||||
blk_add_timer(req);
|
blk_add_timer(req);
|
||||||
blk_clear_rq_complete(req);
|
blk_clear_rq_complete(req);
|
||||||
break;
|
break;
|
||||||
case BLK_EH_NOT_HANDLED:
|
case BLK_EH_DONE:
|
||||||
/*
|
/*
|
||||||
* LLD handles this for now but in the future
|
* LLD handles this for now but in the future
|
||||||
* we can send a request msg to abort the command
|
* we can send a request msg to abort the command
|
||||||
|
|
|
@ -332,7 +332,7 @@ static enum blk_eh_timer_return nbd_xmit_timeout(struct request *req,
|
||||||
}
|
}
|
||||||
blk_mq_requeue_request(req, true);
|
blk_mq_requeue_request(req, true);
|
||||||
nbd_config_put(nbd);
|
nbd_config_put(nbd);
|
||||||
return BLK_EH_NOT_HANDLED;
|
return BLK_EH_DONE;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dev_err_ratelimited(nbd_to_dev(nbd),
|
dev_err_ratelimited(nbd_to_dev(nbd),
|
||||||
|
|
|
@ -1929,7 +1929,7 @@ static enum blk_eh_timer_return mptsas_eh_timed_out(struct scsi_cmnd *sc)
|
||||||
MPT_SCSI_HOST *hd;
|
MPT_SCSI_HOST *hd;
|
||||||
MPT_ADAPTER *ioc;
|
MPT_ADAPTER *ioc;
|
||||||
VirtDevice *vdevice;
|
VirtDevice *vdevice;
|
||||||
enum blk_eh_timer_return rc = BLK_EH_NOT_HANDLED;
|
enum blk_eh_timer_return rc = BLK_EH_DONE;
|
||||||
|
|
||||||
hd = shost_priv(sc->device->host);
|
hd = shost_priv(sc->device->host);
|
||||||
if (hd == NULL) {
|
if (hd == NULL) {
|
||||||
|
|
|
@ -3053,7 +3053,7 @@ out:
|
||||||
*
|
*
|
||||||
* Return values:
|
* Return values:
|
||||||
* BLK_EH_RESET_TIMER if the request should be left running
|
* BLK_EH_RESET_TIMER if the request should be left running
|
||||||
* BLK_EH_NOT_HANDLED if the request is handled or terminated
|
* BLK_EH_DONE if the request is handled or terminated
|
||||||
* by the driver.
|
* by the driver.
|
||||||
*/
|
*/
|
||||||
enum blk_eh_timer_return dasd_times_out(struct request *req, bool reserved)
|
enum blk_eh_timer_return dasd_times_out(struct request *req, bool reserved)
|
||||||
|
@ -3065,7 +3065,7 @@ enum blk_eh_timer_return dasd_times_out(struct request *req, bool reserved)
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
if (!cqr)
|
if (!cqr)
|
||||||
return BLK_EH_NOT_HANDLED;
|
return BLK_EH_DONE;
|
||||||
|
|
||||||
spin_lock_irqsave(&cqr->dq->lock, flags);
|
spin_lock_irqsave(&cqr->dq->lock, flags);
|
||||||
device = cqr->startdev ? cqr->startdev : block->base;
|
device = cqr->startdev ? cqr->startdev : block->base;
|
||||||
|
@ -3124,7 +3124,7 @@ enum blk_eh_timer_return dasd_times_out(struct request *req, bool reserved)
|
||||||
spin_unlock(&block->queue_lock);
|
spin_unlock(&block->queue_lock);
|
||||||
spin_unlock_irqrestore(&cqr->dq->lock, flags);
|
spin_unlock_irqrestore(&cqr->dq->lock, flags);
|
||||||
|
|
||||||
return rc ? BLK_EH_RESET_TIMER : BLK_EH_NOT_HANDLED;
|
return rc ? BLK_EH_RESET_TIMER : BLK_EH_DONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dasd_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,
|
static int dasd_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,
|
||||||
|
|
|
@ -3882,7 +3882,7 @@ static enum blk_eh_timer_return gdth_timed_out(struct scsi_cmnd *scp)
|
||||||
struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp);
|
struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp);
|
||||||
u8 b, t;
|
u8 b, t;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
enum blk_eh_timer_return retval = BLK_EH_NOT_HANDLED;
|
enum blk_eh_timer_return retval = BLK_EH_DONE;
|
||||||
|
|
||||||
TRACE(("%s() cmd 0x%x\n", scp->cmnd[0], __func__));
|
TRACE(("%s() cmd 0x%x\n", scp->cmnd[0], __func__));
|
||||||
b = scp->device->channel;
|
b = scp->device->channel;
|
||||||
|
|
|
@ -1963,7 +1963,7 @@ static int iscsi_has_ping_timed_out(struct iscsi_conn *conn)
|
||||||
|
|
||||||
enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc)
|
enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc)
|
||||||
{
|
{
|
||||||
enum blk_eh_timer_return rc = BLK_EH_NOT_HANDLED;
|
enum blk_eh_timer_return rc = BLK_EH_DONE;
|
||||||
struct iscsi_task *task = NULL, *running_task;
|
struct iscsi_task *task = NULL, *running_task;
|
||||||
struct iscsi_cls_session *cls_session;
|
struct iscsi_cls_session *cls_session;
|
||||||
struct iscsi_session *session;
|
struct iscsi_session *session;
|
||||||
|
|
|
@ -2772,7 +2772,7 @@ blk_eh_timer_return megasas_reset_timer(struct scsi_cmnd *scmd)
|
||||||
|
|
||||||
if (time_after(jiffies, scmd->jiffies_at_alloc +
|
if (time_after(jiffies, scmd->jiffies_at_alloc +
|
||||||
(scmd_timeout * 2) * HZ)) {
|
(scmd_timeout * 2) * HZ)) {
|
||||||
return BLK_EH_NOT_HANDLED;
|
return BLK_EH_DONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
instance = (struct megasas_instance *)scmd->device->host->hostdata;
|
instance = (struct megasas_instance *)scmd->device->host->hostdata;
|
||||||
|
|
|
@ -2155,7 +2155,7 @@ static enum blk_eh_timer_return mvumi_timed_out(struct scsi_cmnd *scmd)
|
||||||
mvumi_return_cmd(mhba, cmd);
|
mvumi_return_cmd(mhba, cmd);
|
||||||
spin_unlock_irqrestore(mhba->shost->host_lock, flags);
|
spin_unlock_irqrestore(mhba->shost->host_lock, flags);
|
||||||
|
|
||||||
return BLK_EH_NOT_HANDLED;
|
return BLK_EH_DONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -1848,7 +1848,7 @@ static enum blk_eh_timer_return qla4xxx_eh_cmd_timed_out(struct scsi_cmnd *sc)
|
||||||
struct iscsi_cls_session *session;
|
struct iscsi_cls_session *session;
|
||||||
struct iscsi_session *sess;
|
struct iscsi_session *sess;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
enum blk_eh_timer_return ret = BLK_EH_NOT_HANDLED;
|
enum blk_eh_timer_return ret = BLK_EH_DONE;
|
||||||
|
|
||||||
session = starget_to_session(scsi_target(sc->device));
|
session = starget_to_session(scsi_target(sc->device));
|
||||||
sess = session->dd_data;
|
sess = session->dd_data;
|
||||||
|
|
|
@ -282,7 +282,7 @@ void scsi_eh_scmd_add(struct scsi_cmnd *scmd)
|
||||||
enum blk_eh_timer_return scsi_times_out(struct request *req)
|
enum blk_eh_timer_return scsi_times_out(struct request *req)
|
||||||
{
|
{
|
||||||
struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(req);
|
struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(req);
|
||||||
enum blk_eh_timer_return rtn = BLK_EH_NOT_HANDLED;
|
enum blk_eh_timer_return rtn = BLK_EH_DONE;
|
||||||
struct Scsi_Host *host = scmd->device->host;
|
struct Scsi_Host *host = scmd->device->host;
|
||||||
|
|
||||||
trace_scsi_dispatch_cmd_timeout(scmd);
|
trace_scsi_dispatch_cmd_timeout(scmd);
|
||||||
|
@ -294,7 +294,7 @@ enum blk_eh_timer_return scsi_times_out(struct request *req)
|
||||||
if (host->hostt->eh_timed_out)
|
if (host->hostt->eh_timed_out)
|
||||||
rtn = host->hostt->eh_timed_out(scmd);
|
rtn = host->hostt->eh_timed_out(scmd);
|
||||||
|
|
||||||
if (rtn == BLK_EH_NOT_HANDLED) {
|
if (rtn == BLK_EH_DONE) {
|
||||||
if (scsi_abort_command(scmd) != SUCCESS) {
|
if (scsi_abort_command(scmd) != SUCCESS) {
|
||||||
set_host_byte(scmd, DID_TIME_OUT);
|
set_host_byte(scmd, DID_TIME_OUT);
|
||||||
scsi_eh_scmd_add(scmd);
|
scsi_eh_scmd_add(scmd);
|
||||||
|
|
|
@ -2087,7 +2087,7 @@ fc_eh_timed_out(struct scsi_cmnd *scmd)
|
||||||
if (rport->port_state == FC_PORTSTATE_BLOCKED)
|
if (rport->port_state == FC_PORTSTATE_BLOCKED)
|
||||||
return BLK_EH_RESET_TIMER;
|
return BLK_EH_RESET_TIMER;
|
||||||
|
|
||||||
return BLK_EH_NOT_HANDLED;
|
return BLK_EH_DONE;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(fc_eh_timed_out);
|
EXPORT_SYMBOL(fc_eh_timed_out);
|
||||||
|
|
||||||
|
@ -3592,7 +3592,7 @@ fc_bsg_job_timeout(struct request *req)
|
||||||
|
|
||||||
/* the blk_end_sync_io() doesn't check the error */
|
/* the blk_end_sync_io() doesn't check the error */
|
||||||
if (!inflight)
|
if (!inflight)
|
||||||
return BLK_EH_NOT_HANDLED;
|
return BLK_EH_DONE;
|
||||||
else
|
else
|
||||||
return BLK_EH_HANDLED;
|
return BLK_EH_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
|
@ -587,7 +587,7 @@ EXPORT_SYMBOL(srp_reconnect_rport);
|
||||||
*
|
*
|
||||||
* If a timeout occurs while an rport is in the blocked state, ask the SCSI
|
* If a timeout occurs while an rport is in the blocked state, ask the SCSI
|
||||||
* EH to continue waiting (BLK_EH_RESET_TIMER). Otherwise let the SCSI core
|
* EH to continue waiting (BLK_EH_RESET_TIMER). Otherwise let the SCSI core
|
||||||
* handle the timeout (BLK_EH_NOT_HANDLED).
|
* handle the timeout (BLK_EH_DONE).
|
||||||
*
|
*
|
||||||
* Note: This function is called from soft-IRQ context and with the request
|
* Note: This function is called from soft-IRQ context and with the request
|
||||||
* queue lock held.
|
* queue lock held.
|
||||||
|
@ -602,7 +602,7 @@ enum blk_eh_timer_return srp_timed_out(struct scsi_cmnd *scmd)
|
||||||
pr_debug("timeout for sdev %s\n", dev_name(&sdev->sdev_gendev));
|
pr_debug("timeout for sdev %s\n", dev_name(&sdev->sdev_gendev));
|
||||||
return rport->fast_io_fail_tmo < 0 && rport->dev_loss_tmo < 0 &&
|
return rport->fast_io_fail_tmo < 0 && rport->dev_loss_tmo < 0 &&
|
||||||
i->f->reset_timer_if_blocked && scsi_device_blocked(sdev) ?
|
i->f->reset_timer_if_blocked && scsi_device_blocked(sdev) ?
|
||||||
BLK_EH_RESET_TIMER : BLK_EH_NOT_HANDLED;
|
BLK_EH_RESET_TIMER : BLK_EH_DONE;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(srp_timed_out);
|
EXPORT_SYMBOL(srp_timed_out);
|
||||||
|
|
||||||
|
|
|
@ -6497,12 +6497,12 @@ static enum blk_eh_timer_return ufshcd_eh_timed_out(struct scsi_cmnd *scmd)
|
||||||
bool found = false;
|
bool found = false;
|
||||||
|
|
||||||
if (!scmd || !scmd->device || !scmd->device->host)
|
if (!scmd || !scmd->device || !scmd->device->host)
|
||||||
return BLK_EH_NOT_HANDLED;
|
return BLK_EH_DONE;
|
||||||
|
|
||||||
host = scmd->device->host;
|
host = scmd->device->host;
|
||||||
hba = shost_priv(host);
|
hba = shost_priv(host);
|
||||||
if (!hba)
|
if (!hba)
|
||||||
return BLK_EH_NOT_HANDLED;
|
return BLK_EH_DONE;
|
||||||
|
|
||||||
spin_lock_irqsave(host->host_lock, flags);
|
spin_lock_irqsave(host->host_lock, flags);
|
||||||
|
|
||||||
|
@ -6520,7 +6520,7 @@ static enum blk_eh_timer_return ufshcd_eh_timed_out(struct scsi_cmnd *scmd)
|
||||||
* SCSI command was not actually dispatched to UFS driver, otherwise
|
* SCSI command was not actually dispatched to UFS driver, otherwise
|
||||||
* let SCSI layer handle the error as usual.
|
* let SCSI layer handle the error as usual.
|
||||||
*/
|
*/
|
||||||
return found ? BLK_EH_NOT_HANDLED : BLK_EH_RESET_TIMER;
|
return found ? BLK_EH_DONE : BLK_EH_RESET_TIMER;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct attribute_group *ufshcd_driver_groups[] = {
|
static const struct attribute_group *ufshcd_driver_groups[] = {
|
||||||
|
|
|
@ -326,7 +326,7 @@ typedef int (init_rq_fn)(struct request_queue *, struct request *, gfp_t);
|
||||||
typedef void (exit_rq_fn)(struct request_queue *, struct request *);
|
typedef void (exit_rq_fn)(struct request_queue *, struct request *);
|
||||||
|
|
||||||
enum blk_eh_timer_return {
|
enum blk_eh_timer_return {
|
||||||
BLK_EH_NOT_HANDLED,
|
BLK_EH_DONE,
|
||||||
BLK_EH_HANDLED,
|
BLK_EH_HANDLED,
|
||||||
BLK_EH_RESET_TIMER,
|
BLK_EH_RESET_TIMER,
|
||||||
};
|
};
|
||||||
|
|
|
@ -307,7 +307,7 @@ struct scsi_host_template {
|
||||||
* EH_HANDLED: I fixed the error, please complete the command
|
* EH_HANDLED: I fixed the error, please complete the command
|
||||||
* EH_RESET_TIMER: I need more time, reset the timer and
|
* EH_RESET_TIMER: I need more time, reset the timer and
|
||||||
* begin counting again
|
* begin counting again
|
||||||
* EH_NOT_HANDLED Begin normal error recovery
|
* EH_DONE: Begin normal error recovery
|
||||||
*
|
*
|
||||||
* Status: OPTIONAL
|
* Status: OPTIONAL
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue