Commit:     0fa6dfdb0a2768541e998a5dab10b368de56c60a
Parent:     48f18c761c001a66ef1928b42799c717368b1d64
Author:     Stefan Richter <[EMAIL PROTECTED]>
AuthorDate: Sun Feb 3 23:10:47 2008 +0100
Committer:  Stefan Richter <[EMAIL PROTECTED]>
CommitDate: Sat Feb 16 15:40:35 2008 +0100

    firewire: fw-sbp2: don't add scsi_device twice
    When a reconnect failed but re-login succeeded, __scsi_add_device was
    called again.
    In those cases, __scsi_add_device succeeded and returned the pointer to
    the existing scsi_device.  fw-sbp2 then continued orderly, except that
    it missed to call sbp2_cancel_orbs.  SCSI core would call fw-sbp2's
    eh_abort_handler eventually if there had been an outstanding command.
    This patch avoids the needless lookups and temporary allocations in SCSI
    core and I/O stall and timeout until eh_abort_handler hits.
    Also, __scsi_add_device tolerating calls for devices which already exist
    is undocumented behavior on which we shouldn't rely.
    Signed-off-by: Stefan Richter <[EMAIL PROTECTED]>
    Signed-off-by: Jarod Wilson <[EMAIL PROTECTED]>
 drivers/firewire/fw-sbp2.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c
index 077f1c0..914170b 100644
--- a/drivers/firewire/fw-sbp2.c
+++ b/drivers/firewire/fw-sbp2.c
@@ -741,6 +741,12 @@ static void sbp2_login(struct work_struct *work)
        PREPARE_DELAYED_WORK(&lu->work, sbp2_reconnect);
+       /* This was a re-login. */
+       if (lu->sdev) {
+               sbp2_cancel_orbs(lu);
+               goto out;
+       }
        if (lu->tgt->workarounds & SBP2_WORKAROUND_DELAY_INQUIRY)
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to