firewire: sbp2: Ignore SBP-2 targets on the local node

The firewire-sbp2 module tries to login to an SBP-2/3 target even when
it is running on the local node, which fails because of the inability to
fetch data from DMA mapped regions using firewire transactions on the
local node. It also doesn't make much sense to have the initiator and
target on the same node, so this patch prevents this behaviour.

Signed-off-by: Chris Boot <bootc@bootc.net>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> (changed the comment)
This commit is contained in:
Chris Boot 2012-02-15 14:59:09 +00:00 committed by Stefan Richter
parent 8ff6a75744
commit 74044563a2
1 changed files with 4 additions and 0 deletions

View File

@ -1141,6 +1141,10 @@ static int sbp2_probe(struct device *dev)
struct Scsi_Host *shost; struct Scsi_Host *shost;
u32 model, firmware_revision; u32 model, firmware_revision;
/* cannot (or should not) handle targets on the local node */
if (device->is_local)
return -ENODEV;
if (dma_get_max_seg_size(device->card->device) > SBP2_MAX_SEG_SIZE) if (dma_get_max_seg_size(device->card->device) > SBP2_MAX_SEG_SIZE)
BUG_ON(dma_set_max_seg_size(device->card->device, BUG_ON(dma_set_max_seg_size(device->card->device,
SBP2_MAX_SEG_SIZE)); SBP2_MAX_SEG_SIZE));