Re: [RFC] FC pass thru - Rev V

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

 



If you're getting multiple sg's, then either the buffer spans some
condition that crosses a boundary that blk_rq_map_sg() enforces (like a
4G boundary, but I doubt that's it), or - and more likely - your
application has a buffer that spans 2 pages which look contiguous to the
app, but are actually virtual-memory mapped to 2 independent physical
pages (thus the need for 2 sg's).  If your app knows the system page
size, and was careful about buffer placement and length within page
boundaries, it likely would never encounter this.  But, we would never
want to force apps to be this smart, and this would be a good
justification for supporting more than 1 sg.
OK. So the whole point that I brought up is implementation specific.
Thank you for the comment.

Yes, but I wouldn't be surprised to see it occur often enough to be a pain. What I would recommend is : if your hardware wants only one buffer descriptor for ELSs, and there's 2 BGs, that you double-buffer it. Allocate a local buffer, transfer the users data into the buffer, and then use the local buffer for the hardware. Same on the receive path. A pain, yes, but this isn't time critical stuff, and it's much better than just returning an error to the app based on it's buffer alignment (which it probably doesn't even realize).

The above works for ELS's (as its small), but I fully expect other things, like CT requests, to not be small and require multiple buffers. On those things, I hope the hardware supports multiple sg's as double-buffering it is ugly.

-- james s
--
To unsubscribe from this list: 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