firewire: fw-sbp2: enforce a retry of __scsi_add_device if bus generation changed
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Fri, 15 Feb 2008 20:29:02 +0000 (21:29 +0100)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Sat, 16 Feb 2008 14:40:35 +0000 (15:40 +0100)
commite80de3704ac30ddb7f9a12447a2ecee32ccd7880
tree87ffc83df0d904b48af17177266ba604c2a3fd86
parent7bb6bf7c8ba0b4ccfecaa00d6faea51b0bd42c8c
firewire: fw-sbp2: enforce a retry of __scsi_add_device if bus generation changed

fw-sbp2 is unable to reconnect while performing __scsi_add_device
because there is only a single workqueue thread context available for
both at the moment.  This should be fixed eventually.

An actual failure of __scsi_add_device is easy to handle, but an
incomplete execution of __scsi_add_device with an sdev returned would
remain undetected and leave the SBP-2 target unusable.

Therefore we use a workaround:  If there was a bus reset during
__scsi_add_device (i.e. during the SCSI probe), we remove the new sdev
immediately, log out, and attempt login and SCSI probe again.

Tested-by: Jarod Wilson <jwilson@redhat.com> (earlier version)
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/firewire/fw-sbp2.c