diff options
author | Christoph Hellwig <hch@lst.de> | 2018-05-29 09:52:29 -0400 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2018-05-29 10:59:21 -0400 |
commit | 6600593cbd9340b3d4fcde8e58d17653732620c4 (patch) | |
tree | 988e41b87c617a6f8b9d0408f8bc16127e7a8bbf | |
parent | 12f5b93145450c750f315657ef239a314811aeeb (diff) |
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>
-rw-r--r-- | Documentation/scsi/scsi_eh.txt | 4 | ||||
-rw-r--r-- | block/blk-mq.c | 2 | ||||
-rw-r--r-- | block/blk-timeout.c | 2 | ||||
-rw-r--r-- | drivers/block/nbd.c | 2 | ||||
-rw-r--r-- | drivers/message/fusion/mptsas.c | 2 | ||||
-rw-r--r-- | drivers/s390/block/dasd.c | 6 | ||||
-rw-r--r-- | drivers/scsi/gdth.c | 2 | ||||
-rw-r--r-- | drivers/scsi/libiscsi.c | 2 | ||||
-rw-r--r-- | drivers/scsi/megaraid/megaraid_sas_base.c | 2 | ||||
-rw-r--r-- | drivers/scsi/mvumi.c | 2 | ||||
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_os.c | 2 | ||||
-rw-r--r-- | drivers/scsi/scsi_error.c | 4 | ||||
-rw-r--r-- | drivers/scsi/scsi_transport_fc.c | 4 | ||||
-rw-r--r-- | drivers/scsi/scsi_transport_srp.c | 4 | ||||
-rw-r--r-- | drivers/scsi/ufs/ufshcd.c | 6 | ||||
-rw-r--r-- | include/linux/blkdev.h | 2 | ||||
-rw-r--r-- | include/scsi/scsi_host.h | 2 |
17 files changed, 25 insertions, 25 deletions
diff --git a/Documentation/scsi/scsi_eh.txt b/Documentation/scsi/scsi_eh.txt index 11e447bdb3a5..3ae8419e72cf 100644 --- a/Documentation/scsi/scsi_eh.txt +++ b/Documentation/scsi/scsi_eh.txt | |||
@@ -97,9 +97,9 @@ function | |||
97 | This indicates that more time is required to finish the | 97 | This indicates that more time is required to finish the |
98 | command. Timer is restarted. This action is counted as a | 98 | command. Timer is restarted. This action is counted as a |
99 | retry and only allowed scmd->allowed + 1(!) times. Once the | 99 | retry and only allowed scmd->allowed + 1(!) times. Once the |
100 | limit is reached, action for BLK_EH_NOT_HANDLED is taken instead. | 100 | limit is reached, action for BLK_EH_DONE is taken instead. |
101 | 101 | ||
102 | - BLK_EH_NOT_HANDLED | 102 | - BLK_EH_DONE |
103 | eh_timed_out() callback did not handle the command. | 103 | eh_timed_out() callback did not handle the command. |
104 | Step #2 is taken. | 104 | Step #2 is taken. |
105 | 105 | ||
diff --git a/block/blk-mq.c b/block/blk-mq.c index 6a7803abbf19..42002c2930b0 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c | |||
@@ -784,7 +784,7 @@ static void blk_mq_rq_timed_out(struct request *req, bool reserved) | |||
784 | case BLK_EH_RESET_TIMER: | 784 | case BLK_EH_RESET_TIMER: |
785 | blk_add_timer(req); | 785 | blk_add_timer(req); |
786 | break; | 786 | break; |
787 | case BLK_EH_NOT_HANDLED: | 787 | case BLK_EH_DONE: |
788 | break; | 788 | break; |
789 | default: | 789 | default: |
790 | printk(KERN_ERR "block: bad eh return: %d\n", ret); | 790 | printk(KERN_ERR "block: bad eh return: %d\n", ret); |
diff --git a/block/blk-timeout.c b/block/blk-timeout.c index f95d6e6cbc96..11879e98c249 100644 --- a/block/blk-timeout.c +++ b/block/blk-timeout.c | |||
@@ -93,7 +93,7 @@ static void blk_rq_timed_out(struct request *req) | |||
93 | blk_add_timer(req); | 93 | blk_add_timer(req); |
94 | blk_clear_rq_complete(req); | 94 | blk_clear_rq_complete(req); |
95 | break; | 95 | break; |
96 | case BLK_EH_NOT_HANDLED: | 96 | case BLK_EH_DONE: |
97 | /* | 97 | /* |
98 | * LLD handles this for now but in the future | 98 | * LLD handles this for now but in the future |
99 | * we can send a request msg to abort the command | 99 | * we can send a request msg to abort the command |
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index 800e1ec71f3d..88ae833aabe9 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c | |||
@@ -332,7 +332,7 @@ static enum blk_eh_timer_return nbd_xmit_timeout(struct request *req, | |||
332 | } | 332 | } |
333 | blk_mq_requeue_request(req, true); | 333 | blk_mq_requeue_request(req, true); |
334 | nbd_config_put(nbd); | 334 | nbd_config_put(nbd); |
335 | return BLK_EH_NOT_HANDLED; | 335 | return BLK_EH_DONE; |
336 | } | 336 | } |
337 | } else { | 337 | } else { |
338 | dev_err_ratelimited(nbd_to_dev(nbd), | 338 | dev_err_ratelimited(nbd_to_dev(nbd), |
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c index 86503f60468f..19a5aa70ecda 100644 --- a/drivers/message/fusion/mptsas.c +++ b/drivers/message/fusion/mptsas.c | |||
@@ -1929,7 +1929,7 @@ static enum blk_eh_timer_return mptsas_eh_timed_out(struct scsi_cmnd *sc) | |||
1929 | MPT_SCSI_HOST *hd; | 1929 | MPT_SCSI_HOST *hd; |
1930 | MPT_ADAPTER *ioc; | 1930 | MPT_ADAPTER *ioc; |
1931 | VirtDevice *vdevice; | 1931 | VirtDevice *vdevice; |
1932 | enum blk_eh_timer_return rc = BLK_EH_NOT_HANDLED; | 1932 | enum blk_eh_timer_return rc = BLK_EH_DONE; |
1933 | 1933 | ||
1934 | hd = shost_priv(sc->device->host); | 1934 | hd = shost_priv(sc->device->host); |
1935 | if (hd == NULL) { | 1935 | if (hd == NULL) { |
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index 04143c08bd6e..b0e89ca48a3c 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c | |||
@@ -3053,7 +3053,7 @@ out: | |||
3053 | * | 3053 | * |
3054 | * Return values: | 3054 | * Return values: |
3055 | * BLK_EH_RESET_TIMER if the request should be left running | 3055 | * BLK_EH_RESET_TIMER if the request should be left running |
3056 | * BLK_EH_NOT_HANDLED if the request is handled or terminated | 3056 | * BLK_EH_DONE if the request is handled or terminated |
3057 | * by the driver. | 3057 | * by the driver. |
3058 | */ | 3058 | */ |
3059 | enum blk_eh_timer_return dasd_times_out(struct request *req, bool reserved) | 3059 | 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) | |||
3065 | int rc = 0; | 3065 | int rc = 0; |
3066 | 3066 | ||
3067 | if (!cqr) | 3067 | if (!cqr) |
3068 | return BLK_EH_NOT_HANDLED; | 3068 | return BLK_EH_DONE; |
3069 | 3069 | ||
3070 | spin_lock_irqsave(&cqr->dq->lock, flags); | 3070 | spin_lock_irqsave(&cqr->dq->lock, flags); |
3071 | device = cqr->startdev ? cqr->startdev : block->base; | 3071 | device = cqr->startdev ? cqr->startdev : block->base; |
@@ -3124,7 +3124,7 @@ enum blk_eh_timer_return dasd_times_out(struct request *req, bool reserved) | |||
3124 | spin_unlock(&block->queue_lock); | 3124 | spin_unlock(&block->queue_lock); |
3125 | spin_unlock_irqrestore(&cqr->dq->lock, flags); | 3125 | spin_unlock_irqrestore(&cqr->dq->lock, flags); |
3126 | 3126 | ||
3127 | return rc ? BLK_EH_RESET_TIMER : BLK_EH_NOT_HANDLED; | 3127 | return rc ? BLK_EH_RESET_TIMER : BLK_EH_DONE; |
3128 | } | 3128 | } |
3129 | 3129 | ||
3130 | static int dasd_init_hctx(struct blk_mq_hw_ctx *hctx, void *data, | 3130 | static int dasd_init_hctx(struct blk_mq_hw_ctx *hctx, void *data, |
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c index c35f05c4c6bb..85604795d8ee 100644 --- a/drivers/scsi/gdth.c +++ b/drivers/scsi/gdth.c | |||
@@ -3882,7 +3882,7 @@ static enum blk_eh_timer_return gdth_timed_out(struct scsi_cmnd *scp) | |||
3882 | struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); | 3882 | struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); |
3883 | u8 b, t; | 3883 | u8 b, t; |
3884 | unsigned long flags; | 3884 | unsigned long flags; |
3885 | enum blk_eh_timer_return retval = BLK_EH_NOT_HANDLED; | 3885 | enum blk_eh_timer_return retval = BLK_EH_DONE; |
3886 | 3886 | ||
3887 | TRACE(("%s() cmd 0x%x\n", scp->cmnd[0], __func__)); | 3887 | TRACE(("%s() cmd 0x%x\n", scp->cmnd[0], __func__)); |
3888 | b = scp->device->channel; | 3888 | b = scp->device->channel; |
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c index 15a2fef51e38..eee43ba83a60 100644 --- a/drivers/scsi/libiscsi.c +++ b/drivers/scsi/libiscsi.c | |||
@@ -1963,7 +1963,7 @@ static int iscsi_has_ping_timed_out(struct iscsi_conn *conn) | |||
1963 | 1963 | ||
1964 | enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc) | 1964 | enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc) |
1965 | { | 1965 | { |
1966 | enum blk_eh_timer_return rc = BLK_EH_NOT_HANDLED; | 1966 | enum blk_eh_timer_return rc = BLK_EH_DONE; |
1967 | struct iscsi_task *task = NULL, *running_task; | 1967 | struct iscsi_task *task = NULL, *running_task; |
1968 | struct iscsi_cls_session *cls_session; | 1968 | struct iscsi_cls_session *cls_session; |
1969 | struct iscsi_session *session; | 1969 | struct iscsi_session *session; |
diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c index b89c6e6c0589..ce656c466ca9 100644 --- a/drivers/scsi/megaraid/megaraid_sas_base.c +++ b/drivers/scsi/megaraid/megaraid_sas_base.c | |||
@@ -2772,7 +2772,7 @@ blk_eh_timer_return megasas_reset_timer(struct scsi_cmnd *scmd) | |||
2772 | 2772 | ||
2773 | if (time_after(jiffies, scmd->jiffies_at_alloc + | 2773 | if (time_after(jiffies, scmd->jiffies_at_alloc + |
2774 | (scmd_timeout * 2) * HZ)) { | 2774 | (scmd_timeout * 2) * HZ)) { |
2775 | return BLK_EH_NOT_HANDLED; | 2775 | return BLK_EH_DONE; |
2776 | } | 2776 | } |
2777 | 2777 | ||
2778 | instance = (struct megasas_instance *)scmd->device->host->hostdata; | 2778 | instance = (struct megasas_instance *)scmd->device->host->hostdata; |
diff --git a/drivers/scsi/mvumi.c b/drivers/scsi/mvumi.c index fe97401ad192..afd27165cd93 100644 --- a/drivers/scsi/mvumi.c +++ b/drivers/scsi/mvumi.c | |||
@@ -2155,7 +2155,7 @@ static enum blk_eh_timer_return mvumi_timed_out(struct scsi_cmnd *scmd) | |||
2155 | mvumi_return_cmd(mhba, cmd); | 2155 | mvumi_return_cmd(mhba, cmd); |
2156 | spin_unlock_irqrestore(mhba->shost->host_lock, flags); | 2156 | spin_unlock_irqrestore(mhba->shost->host_lock, flags); |
2157 | 2157 | ||
2158 | return BLK_EH_NOT_HANDLED; | 2158 | return BLK_EH_DONE; |
2159 | } | 2159 | } |
2160 | 2160 | ||
2161 | static int | 2161 | static int |
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c index 94c14ce94da2..0e13349dce57 100644 --- a/drivers/scsi/qla4xxx/ql4_os.c +++ b/drivers/scsi/qla4xxx/ql4_os.c | |||
@@ -1848,7 +1848,7 @@ static enum blk_eh_timer_return qla4xxx_eh_cmd_timed_out(struct scsi_cmnd *sc) | |||
1848 | struct iscsi_cls_session *session; | 1848 | struct iscsi_cls_session *session; |
1849 | struct iscsi_session *sess; | 1849 | struct iscsi_session *sess; |
1850 | unsigned long flags; | 1850 | unsigned long flags; |
1851 | enum blk_eh_timer_return ret = BLK_EH_NOT_HANDLED; | 1851 | enum blk_eh_timer_return ret = BLK_EH_DONE; |
1852 | 1852 | ||
1853 | session = starget_to_session(scsi_target(sc->device)); | 1853 | session = starget_to_session(scsi_target(sc->device)); |
1854 | sess = session->dd_data; | 1854 | sess = session->dd_data; |
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index b36e73090018..9c02ba2e7ef3 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c | |||
@@ -282,7 +282,7 @@ void scsi_eh_scmd_add(struct scsi_cmnd *scmd) | |||
282 | enum blk_eh_timer_return scsi_times_out(struct request *req) | 282 | enum blk_eh_timer_return scsi_times_out(struct request *req) |
283 | { | 283 | { |
284 | struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(req); | 284 | struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(req); |
285 | enum blk_eh_timer_return rtn = BLK_EH_NOT_HANDLED; | 285 | enum blk_eh_timer_return rtn = BLK_EH_DONE; |
286 | struct Scsi_Host *host = scmd->device->host; | 286 | struct Scsi_Host *host = scmd->device->host; |
287 | 287 | ||
288 | trace_scsi_dispatch_cmd_timeout(scmd); | 288 | trace_scsi_dispatch_cmd_timeout(scmd); |
@@ -294,7 +294,7 @@ enum blk_eh_timer_return scsi_times_out(struct request *req) | |||
294 | if (host->hostt->eh_timed_out) | 294 | if (host->hostt->eh_timed_out) |
295 | rtn = host->hostt->eh_timed_out(scmd); | 295 | rtn = host->hostt->eh_timed_out(scmd); |
296 | 296 | ||
297 | if (rtn == BLK_EH_NOT_HANDLED) { | 297 | if (rtn == BLK_EH_DONE) { |
298 | if (scsi_abort_command(scmd) != SUCCESS) { | 298 | if (scsi_abort_command(scmd) != SUCCESS) { |
299 | set_host_byte(scmd, DID_TIME_OUT); | 299 | set_host_byte(scmd, DID_TIME_OUT); |
300 | scsi_eh_scmd_add(scmd); | 300 | scsi_eh_scmd_add(scmd); |
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c index be3be0f9cb2d..90075a0ddcfe 100644 --- a/drivers/scsi/scsi_transport_fc.c +++ b/drivers/scsi/scsi_transport_fc.c | |||
@@ -2087,7 +2087,7 @@ fc_eh_timed_out(struct scsi_cmnd *scmd) | |||
2087 | if (rport->port_state == FC_PORTSTATE_BLOCKED) | 2087 | if (rport->port_state == FC_PORTSTATE_BLOCKED) |
2088 | return BLK_EH_RESET_TIMER; | 2088 | return BLK_EH_RESET_TIMER; |
2089 | 2089 | ||
2090 | return BLK_EH_NOT_HANDLED; | 2090 | return BLK_EH_DONE; |
2091 | } | 2091 | } |
2092 | EXPORT_SYMBOL(fc_eh_timed_out); | 2092 | EXPORT_SYMBOL(fc_eh_timed_out); |
2093 | 2093 | ||
@@ -3592,7 +3592,7 @@ fc_bsg_job_timeout(struct request *req) | |||
3592 | 3592 | ||
3593 | /* the blk_end_sync_io() doesn't check the error */ | 3593 | /* the blk_end_sync_io() doesn't check the error */ |
3594 | if (!inflight) | 3594 | if (!inflight) |
3595 | return BLK_EH_NOT_HANDLED; | 3595 | return BLK_EH_DONE; |
3596 | else | 3596 | else |
3597 | return BLK_EH_HANDLED; | 3597 | return BLK_EH_HANDLED; |
3598 | } | 3598 | } |
diff --git a/drivers/scsi/scsi_transport_srp.c b/drivers/scsi/scsi_transport_srp.c index 36f6190931bc..a9c1c991da35 100644 --- a/drivers/scsi/scsi_transport_srp.c +++ b/drivers/scsi/scsi_transport_srp.c | |||
@@ -587,7 +587,7 @@ EXPORT_SYMBOL(srp_reconnect_rport); | |||
587 | * | 587 | * |
588 | * If a timeout occurs while an rport is in the blocked state, ask the SCSI | 588 | * If a timeout occurs while an rport is in the blocked state, ask the SCSI |
589 | * EH to continue waiting (BLK_EH_RESET_TIMER). Otherwise let the SCSI core | 589 | * EH to continue waiting (BLK_EH_RESET_TIMER). Otherwise let the SCSI core |
590 | * handle the timeout (BLK_EH_NOT_HANDLED). | 590 | * handle the timeout (BLK_EH_DONE). |
591 | * | 591 | * |
592 | * Note: This function is called from soft-IRQ context and with the request | 592 | * Note: This function is called from soft-IRQ context and with the request |
593 | * queue lock held. | 593 | * queue lock held. |
@@ -602,7 +602,7 @@ enum blk_eh_timer_return srp_timed_out(struct scsi_cmnd *scmd) | |||
602 | pr_debug("timeout for sdev %s\n", dev_name(&sdev->sdev_gendev)); | 602 | pr_debug("timeout for sdev %s\n", dev_name(&sdev->sdev_gendev)); |
603 | return rport->fast_io_fail_tmo < 0 && rport->dev_loss_tmo < 0 && | 603 | return rport->fast_io_fail_tmo < 0 && rport->dev_loss_tmo < 0 && |
604 | i->f->reset_timer_if_blocked && scsi_device_blocked(sdev) ? | 604 | i->f->reset_timer_if_blocked && scsi_device_blocked(sdev) ? |
605 | BLK_EH_RESET_TIMER : BLK_EH_NOT_HANDLED; | 605 | BLK_EH_RESET_TIMER : BLK_EH_DONE; |
606 | } | 606 | } |
607 | EXPORT_SYMBOL(srp_timed_out); | 607 | EXPORT_SYMBOL(srp_timed_out); |
608 | 608 | ||
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 00e79057f870..d0a1674915a1 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c | |||
@@ -6497,12 +6497,12 @@ static enum blk_eh_timer_return ufshcd_eh_timed_out(struct scsi_cmnd *scmd) | |||
6497 | bool found = false; | 6497 | bool found = false; |
6498 | 6498 | ||
6499 | if (!scmd || !scmd->device || !scmd->device->host) | 6499 | if (!scmd || !scmd->device || !scmd->device->host) |
6500 | return BLK_EH_NOT_HANDLED; | 6500 | return BLK_EH_DONE; |
6501 | 6501 | ||
6502 | host = scmd->device->host; | 6502 | host = scmd->device->host; |
6503 | hba = shost_priv(host); | 6503 | hba = shost_priv(host); |
6504 | if (!hba) | 6504 | if (!hba) |
6505 | return BLK_EH_NOT_HANDLED; | 6505 | return BLK_EH_DONE; |
6506 | 6506 | ||
6507 | spin_lock_irqsave(host->host_lock, flags); | 6507 | spin_lock_irqsave(host->host_lock, flags); |
6508 | 6508 | ||
@@ -6520,7 +6520,7 @@ static enum blk_eh_timer_return ufshcd_eh_timed_out(struct scsi_cmnd *scmd) | |||
6520 | * SCSI command was not actually dispatched to UFS driver, otherwise | 6520 | * SCSI command was not actually dispatched to UFS driver, otherwise |
6521 | * let SCSI layer handle the error as usual. | 6521 | * let SCSI layer handle the error as usual. |
6522 | */ | 6522 | */ |
6523 | return found ? BLK_EH_NOT_HANDLED : BLK_EH_RESET_TIMER; | 6523 | return found ? BLK_EH_DONE : BLK_EH_RESET_TIMER; |
6524 | } | 6524 | } |
6525 | 6525 | ||
6526 | static const struct attribute_group *ufshcd_driver_groups[] = { | 6526 | static const struct attribute_group *ufshcd_driver_groups[] = { |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index a1c05e85a443..f82e05df905b 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -326,7 +326,7 @@ typedef int (init_rq_fn)(struct request_queue *, struct request *, gfp_t); | |||
326 | typedef void (exit_rq_fn)(struct request_queue *, struct request *); | 326 | typedef void (exit_rq_fn)(struct request_queue *, struct request *); |
327 | 327 | ||
328 | enum blk_eh_timer_return { | 328 | enum blk_eh_timer_return { |
329 | BLK_EH_NOT_HANDLED, | 329 | BLK_EH_DONE, |
330 | BLK_EH_HANDLED, | 330 | BLK_EH_HANDLED, |
331 | BLK_EH_RESET_TIMER, | 331 | BLK_EH_RESET_TIMER, |
332 | }; | 332 | }; |
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index 12f454cb6f61..53b485fe9b67 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h | |||
@@ -307,7 +307,7 @@ struct scsi_host_template { | |||
307 | * EH_HANDLED: I fixed the error, please complete the command | 307 | * EH_HANDLED: I fixed the error, please complete the command |
308 | * EH_RESET_TIMER: I need more time, reset the timer and | 308 | * EH_RESET_TIMER: I need more time, reset the timer and |
309 | * begin counting again | 309 | * begin counting again |
310 | * EH_NOT_HANDLED Begin normal error recovery | 310 | * EH_DONE: Begin normal error recovery |
311 | * | 311 | * |
312 | * Status: OPTIONAL | 312 | * Status: OPTIONAL |
313 | */ | 313 | */ |