IB/srp: add support for indirect tables that don't fit in SRP_CMD
authorDavid Dillow <dillowda@ornl.gov>
Sun, 16 Jan 2011 18:57:10 +0000 (13:57 -0500)
committerDavid Dillow <dillowda@ornl.gov>
Tue, 15 Mar 2011 23:37:23 +0000 (19:37 -0400)
commitc07d424d6118d528ef71b22b7424bfc359c307a5
tree1d61da8aea0fa80c2c7bc13b03d15ddb470bcfa6
parent8f26c9ff9cd0317ad867bce972f69e0c6c2cbe3c
IB/srp: add support for indirect tables that don't fit in SRP_CMD

This allows us to guarantee the ability to submit up to 8 MB requests
based on the current value of SCSI_MAX_SG_CHAIN_SEGMENTS. While FMR will
usually condense the requests into 8 SG entries, it is imperative that
the target support external tables in case the FMR mapping fails or is
not supported.

We add a safety valve to allow targets without the needed support to
reap the benefits of the large tables, but fail in a manner that lets
the user know that the data didn't make it to the device. The user must
add "allow_ext_sg=1" to the target parameters to indicate that the
target has the needed support.

If indirect_sg_entries is not specified in the modules options, then
the sg_tablesize for the target will default to cmd_sg_entries unless
overridden by the target options.

Signed-off-by: David Dillow <dillowda@ornl.gov>
drivers/infiniband/ulp/srp/ib_srp.c
drivers/infiniband/ulp/srp/ib_srp.h