瀏覽代碼

RDMA/iser: Limit sgs to the device fastreg depth

Currently the sg tablesize, which dictates fast register page list
depth to use, does not take into account the limits of the rdma device.
So adjust it once we discover the device fastreg max depth limit.  Also
adjust the max_sectors based on the resulting sg tablesize.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Steve Wise 10 年之前
父節點
當前提交
7854550ae6
共有 1 個文件被更改,包括 9 次插入0 次删除
  1. 9 0
      drivers/infiniband/ulp/iser/iscsi_iser.c

+ 9 - 0
drivers/infiniband/ulp/iser/iscsi_iser.c

@@ -640,6 +640,15 @@ iscsi_iser_session_create(struct iscsi_endpoint *ep,
 						   SHOST_DIX_GUARD_CRC);
 						   SHOST_DIX_GUARD_CRC);
 		}
 		}
 
 
+		/*
+		 * Limit the sg_tablesize and max_sectors based on the device
+		 * max fastreg page list length.
+		 */
+		shost->sg_tablesize = min_t(unsigned short, shost->sg_tablesize,
+			ib_conn->device->dev_attr.max_fast_reg_page_list_len);
+		shost->max_sectors = min_t(unsigned int,
+			1024, (shost->sg_tablesize * PAGE_SIZE) >> 9);
+
 		if (iscsi_host_add(shost,
 		if (iscsi_host_add(shost,
 				   ib_conn->device->ib_device->dma_device)) {
 				   ib_conn->device->ib_device->dma_device)) {
 			mutex_unlock(&iser_conn->state_mutex);
 			mutex_unlock(&iser_conn->state_mutex);