Re: I want scsi_target_block() in interrupt context

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jun 29, 2005 at 10:27:40AM -0700, Roland Dreier wrote:
> I'm working on an implementation of SCSI RDMA Protocol (SRP) on
> InfiniBand, and I'm running into an issue managing the number of
> commands that get queued.
> 
> The setup is like this: each SRP scsi_host can connect to multiple
> target ports.  Each target port can have multiple LUNs behind it.  To
> support this, for each connection, I create a device, set its parent
> to the scsi_host's shost_gendev, and then call scsi_scan_target to
> discover the LUNs behind the target port.
> 
> This mostly works fine, except the number of outstanding commands is
> limited per connection.  This doesn't fit that well with the Linux
> SCSI stack -- can_queue for the scsi_host doesn't work, since a single
> scsi_host can have multiple connections, and cmd_per_lun doesn't work
> since a single connection can have many LUNs.
> 
> What seems like it _would_ be exactly what I need would be calling
> scsi_target_block() on the device representing the connection.
> Unfortunately, scsi_target_block() uses all sorts of device model
> stuff that takes semaphores and hence potentially sleeps.  This means
> that I can't block a connection while holding a lock to prevent races.
> 
> So I don't see a race-free way I can ensure that I never queue up too
> many commands on a given connection.

Just allocate one scsi_host per connection.

-
: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux