Re: [PATCH/RFT] libata "DMA timeout" fix

From: Jeff Garzik (jgarzik_at_pobox.com)
Date: 02/29/04

  • Next message: Michael Frank: "Re: [OT] Copyright infringement by Walmart?"
    Date:	Sun, 29 Feb 2004 12:31:20 -0500
    To: Justin Cormack <justin@street-vision.com>
    
    
    

    Justin Cormack wrote:
    > Thanks, testing James's fix on one machine at the moment. Will have
    > another six or so machines as a libata test farm tomorrow.

    You'll need a few more changes... here's the final patch.

            Jeff

    
    

    # This is a BitKeeper generated patch for the following project:
    # Project Name: Linux kernel tree
    # This patch format is intended for GNU patch command version 2.5 or higher.
    # This patch includes the following deltas:
    # ChangeSet 1.1682 -> 1.1683
    # drivers/scsi/libata-core.c 1.19 -> 1.20
    # drivers/scsi/scsi.c 1.136 -> 1.137
    # drivers/scsi/scsi_priv.h 1.30 -> 1.31
    # include/scsi/scsi_cmnd.h 1.4 -> 1.5
    #
    # The following is the BitKeeper ChangeSet Log
    # --------------------------------------------
    # 04/02/28 jgarzik@redhat.com 1.1683
    # [libata] Use scsi_finish_command as completion function,
    # in our error handling thread callback.
    #
    # This also exports scsi_finish_command in the SCSI layer.
    #
    # Thanks much to James Bottomley and his patience, as this solution
    # was figured out.
    # --------------------------------------------
    #
    diff -Nru a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
    --- a/drivers/scsi/libata-core.c Sun Feb 29 12:30:47 2004
    +++ b/drivers/scsi/libata-core.c Sun Feb 29 12:30:47 2004
    @@ -2005,6 +2005,14 @@
                     goto out;
             }
     
    + /* hack alert! We cannot use the supplied completion
    + * function from inside the ->eh_strategy_handler() thread.
    + * libata is the only user of ->eh_strategy_handler() in
    + * any kernel, so the default scsi_done() assumes it is
    + * not being called from the SCSI EH.
    + */
    + qc->scsidone = scsi_finish_command;
    +
             switch (qc->tf.protocol) {
             case ATA_PROT_DMA_READ:
             case ATA_PROT_DMA_WRITE:
    diff -Nru a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
    --- a/drivers/scsi/scsi.c Sun Feb 29 12:30:47 2004
    +++ b/drivers/scsi/scsi.c Sun Feb 29 12:30:47 2004
    @@ -847,6 +847,7 @@
     
             cmd->done(cmd);
     }
    +EXPORT_SYMBOL(scsi_finish_command);
     
     /*
      * Function: scsi_adjust_queue_depth()
    diff -Nru a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
    --- a/drivers/scsi/scsi_priv.h Sun Feb 29 12:30:47 2004
    +++ b/drivers/scsi/scsi_priv.h Sun Feb 29 12:30:47 2004
    @@ -77,7 +77,6 @@
     extern int scsi_setup_command_freelist(struct Scsi_Host *shost);
     extern void scsi_destroy_command_freelist(struct Scsi_Host *shost);
     extern void scsi_done(struct scsi_cmnd *cmd);
    -extern void scsi_finish_command(struct scsi_cmnd *cmd);
     extern int scsi_retry_command(struct scsi_cmnd *cmd);
     extern int scsi_insert_special_req(struct scsi_request *sreq, int);
     extern void scsi_init_cmd_from_req(struct scsi_cmnd *cmd,
    diff -Nru a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h
    --- a/include/scsi/scsi_cmnd.h Sun Feb 29 12:30:47 2004
    +++ b/include/scsi/scsi_cmnd.h Sun Feb 29 12:30:47 2004
    @@ -159,5 +159,6 @@
     extern struct scsi_cmnd *scsi_get_command(struct scsi_device *, int);
     extern void scsi_put_command(struct scsi_cmnd *);
     extern void scsi_io_completion(struct scsi_cmnd *, unsigned int, unsigned int);
    +extern void scsi_finish_command(struct scsi_cmnd *cmd);
     
     #endif /* _SCSI_SCSI_CMND_H */

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/


  • Next message: Michael Frank: "Re: [OT] Copyright infringement by Walmart?"

    Relevant Pages

    • Re: [Kgdb-bugreport] [PATCH][2/3] Update CVS KGDBs have kgdb_{schedule,process}_breakpoint
      ... That makes 8250 response it a _bit_ slower. ... > # This is a BitKeeper generated patch for the following project: ... > # The following is the BitKeeper ChangeSet Log ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • Re: sparc scsi esp depends on pci & hangs on boot
      ... On Wed, 23 Jul 2003, David S. Miller wrote: ... > # This is a BitKeeper generated patch for the following project: ... > # The following is the BitKeeper ChangeSet Log ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • [PATCH] enable fast symbol lookup via an inverted index in cscope
      ... # This patch format is intended for GNU patch command version 2.5 or higher. ... # The following is the BitKeeper ChangeSet Log ... # [CSCOPE] enable fast symbol lookup via an inverted index. ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • Re: hugepagetlb, include linux/module.h
      ... > stuff to compile this for sparc64, but ran afoul of missing PCI ... > which will likely result in a separate patch. ... > # The following is the BitKeeper ChangeSet Log ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • Re: -bk regression against -test9
      ... Linus's tree already, as follows below. ... # This patch format is intended for GNU patch command version 2.5 or higher. ... # The following is the BitKeeper ChangeSet Log ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)