Message ID | 20230721163229.399676-10-nks@flawful.org |
---|---|
State | Superseded |
Headers | show |
Series | libata: remove references to 'old' error handler | expand |
On 21/07/2023 17:32, Niklas Cassel wrote: > From: Niklas Cassel<niklas.cassel@wdc.com> > > Now when all libata drivers have migrated to use the error_handler > callback, remove the deprecated phy_reset and eng_timeout callbacks. > > Also remove references to non-existent functions sata_phy_reset and > ata_qc_timeout from Documentation/driver-api/libata.rst. > > Signed-off-by: Niklas Cassel<niklas.cassel@wdc.com> Reviewed-by: John Garry <john.g.garry@oracle.com>
On 21/07/2023 17:32, Niklas Cassel wrote: > From: Niklas Cassel<niklas.cassel@wdc.com> > > Now when all libata drivers have migrated to use the error_handler > callback, remove the deprecated phy_reset and eng_timeout callbacks. > > Also remove references to non-existent functions sata_phy_reset and > ata_qc_timeout from Documentation/driver-api/libata.rst. > > Signed-off-by: Niklas Cassel<niklas.cassel@wdc.com> Reviewed-by: John Garry <john.g.garry@oracle.com>
On 7/21/23 7:32 PM, Niklas Cassel wrote: > From: Niklas Cassel <niklas.cassel@wdc.com> > > Now when all libata drivers have migrated to use the error_handler > callback, remove the deprecated phy_reset and eng_timeout callbacks. > > Also remove references to non-existent functions sata_phy_reset and > ata_qc_timeout from Documentation/driver-api/libata.rst. > > Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> [...] > diff --git a/drivers/ata/pata_sl82c105.c b/drivers/ata/pata_sl82c105.c > index 3b62ea482f1a..93882e976ede 100644 > --- a/drivers/ata/pata_sl82c105.c > +++ b/drivers/ata/pata_sl82c105.c > @@ -180,8 +180,7 @@ static void sl82c105_bmdma_start(struct ata_queued_cmd *qc) > * document. > * > * This function is also called to turn off DMA when a timeout occurs > - * during DMA operation. In both cases we need to reset the engine, > - * so no actual eng_timeout handler is required. > + * during DMA operation. In both cases we need to reset the engine. > * > * We assume bmdma_stop is always called if bmdma_start as called. If > * not then we may need to wrap qc_issue. Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru> [...] MBR, Sergey
On 2023/7/22 0:32, Niklas Cassel wrote: > From: Niklas Cassel<niklas.cassel@wdc.com> > > Now when all libata drivers have migrated to use the error_handler > callback, remove the deprecated phy_reset and eng_timeout callbacks. > > Also remove references to non-existent functions sata_phy_reset and > ata_qc_timeout from Documentation/driver-api/libata.rst. > > Signed-off-by: Niklas Cassel<niklas.cassel@wdc.com> > --- > Documentation/driver-api/libata.rst | 22 ++++++---------------- > drivers/ata/pata_sl82c105.c | 3 +-- > include/linux/libata.h | 6 ------ > 3 files changed, 7 insertions(+), 24 deletions(-) Reviewed-by: Jason Yan <yanaijie@huawei.com>
diff --git a/Documentation/driver-api/libata.rst b/Documentation/driver-api/libata.rst index eecb8b81e185..5da27a749246 100644 --- a/Documentation/driver-api/libata.rst +++ b/Documentation/driver-api/libata.rst @@ -256,14 +256,6 @@ advanced drivers implement their own ``->qc_issue``. Exception and probe handling (EH) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -:: - - void (*eng_timeout) (struct ata_port *ap); - void (*phy_reset) (struct ata_port *ap); - - -Deprecated. Use ``->error_handler()`` instead. - :: void (*freeze) (struct ata_port *ap); @@ -348,8 +340,7 @@ SATA phy read/write u32 val); -Read and write standard SATA phy registers. Currently only used if -``->phy_reset`` hook called the :c:func:`sata_phy_reset` helper function. +Read and write standard SATA phy registers. sc_reg is one of SCR_STATUS, SCR_CONTROL, SCR_ERROR, or SCR_ACTIVE. Init and shutdown @@ -520,13 +511,12 @@ to return without deallocating the qc. This leads us to :c:func:`ata_scsi_error` is the current ``transportt->eh_strategy_handler()`` for libata. As discussed above, this will be entered in two cases - -timeout and ATAPI error completion. This function calls low level libata -driver's :c:func:`eng_timeout` callback, the standard callback for which is -:c:func:`ata_eng_timeout`. It checks if a qc is active and calls -:c:func:`ata_qc_timeout` on the qc if so. Actual error handling occurs in -:c:func:`ata_qc_timeout`. +timeout and ATAPI error completion. This function will check if a qc is active +and has not failed yet. Such a qc will be marked with AC_ERR_TIMEOUT such that +EH will know to handle it later. Then it calls low level libata driver's +:c:func:`error_handler` callback. -If EH is invoked for timeout, :c:func:`ata_qc_timeout` stops BMDMA and +When the :c:func:`error_handler` callback is invoked it stops BMDMA and completes the qc. Note that as we're currently in EH, we cannot call scsi_done. As described in SCSI EH doc, a recovered scmd should be either retried with :c:func:`scsi_queue_insert` or finished with diff --git a/drivers/ata/pata_sl82c105.c b/drivers/ata/pata_sl82c105.c index 3b62ea482f1a..93882e976ede 100644 --- a/drivers/ata/pata_sl82c105.c +++ b/drivers/ata/pata_sl82c105.c @@ -180,8 +180,7 @@ static void sl82c105_bmdma_start(struct ata_queued_cmd *qc) * document. * * This function is also called to turn off DMA when a timeout occurs - * during DMA operation. In both cases we need to reset the engine, - * so no actual eng_timeout handler is required. + * during DMA operation. In both cases we need to reset the engine. * * We assume bmdma_stop is always called if bmdma_start as called. If * not then we may need to wrap qc_issue. diff --git a/include/linux/libata.h b/include/linux/libata.h index 2d5e4b516a69..3718169834d5 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h @@ -975,12 +975,6 @@ struct ata_port_operations { ssize_t (*transmit_led_message)(struct ata_port *ap, u32 state, ssize_t size); - /* - * Obsolete - */ - void (*phy_reset)(struct ata_port *ap); - void (*eng_timeout)(struct ata_port *ap); - /* * ->inherits must be the last field and all the preceding * fields must be pointers.