mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-04 09:34:12 +08:00
IB/iser: Handle lack of memory management extentions correctly
max_fast_reg_page_list_len is only valid when the
memory management extentions are signaled by the underlying
driver.
Fix by adjusting iser_calc_scsi_params() to use
ISCSI_ISER_MAX_SG_TABLESIZE when the extentions are not indicated.
Reported-by: Thomas Rosenstein <thomas.rosenstein@creamfinance.com>
Fixes: Commit df749cdc45
("IB/iser: Support up to 8MB data transfer in a single command")
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Acked-by: Sagi Grimberg <sagi@grimberg.me>
Tested-by: Thomas Rosenstein <thomas.rosenstein@creamfinance.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
8e95960199
commit
e7d80c8304
@ -708,8 +708,14 @@ iser_calc_scsi_params(struct iser_conn *iser_conn,
|
||||
unsigned short sg_tablesize, sup_sg_tablesize;
|
||||
|
||||
sg_tablesize = DIV_ROUND_UP(max_sectors * 512, SIZE_4K);
|
||||
sup_sg_tablesize = min_t(unsigned, ISCSI_ISER_MAX_SG_TABLESIZE,
|
||||
device->ib_device->attrs.max_fast_reg_page_list_len);
|
||||
if (device->ib_device->attrs.device_cap_flags &
|
||||
IB_DEVICE_MEM_MGT_EXTENSIONS)
|
||||
sup_sg_tablesize =
|
||||
min_t(
|
||||
uint, ISCSI_ISER_MAX_SG_TABLESIZE,
|
||||
device->ib_device->attrs.max_fast_reg_page_list_len);
|
||||
else
|
||||
sup_sg_tablesize = ISCSI_ISER_MAX_SG_TABLESIZE;
|
||||
|
||||
iser_conn->scsi_sg_tablesize = min(sg_tablesize, sup_sg_tablesize);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user