[rds-devel] [PATCH bugfix] rds/ib: correlate max pages per fmr to
the fmr page shift
Or Gerlitz
ogerlitz at voltaire.com
Mon Jan 14 04:41:54 PST 2008
Correlate the maximum number of "pages" an fmr should map to page shift used with
this pool, make the value of the fmr_message size module param and the RDS_FMR_SIZE
constant value to reflect the semantics of being the maximum size of an RDMA transfer.
The current code assumes that the fmr page shift is always 12 which means that
without this patch on HCAs supporting smaller then 4K "page" (fmr chunks) sizes
this test in ib_rdma.c/ib_map_fmr() would fail
if (page_cnt > fmr_message_size)
return -EINVAL;
Signed-off-by: Or Gerlitz <ogerlitz at voltaire.com>
Index: ofa_1_3_kernel-20080113-0200/net/rds/ib.c
===================================================================
--- ofa_1_3_kernel-20080113-0200.orig/net/rds/ib.c
+++ ofa_1_3_kernel-20080113-0200/net/rds/ib.c
@@ -100,7 +100,7 @@ void rds_ib_add_one(struct ib_device *de
fmr_param.pool_size = fmr_pool_size;
fmr_param.dirty_watermark = fmr_pool_size / 4;
fmr_param.cache = 0;
- fmr_param.max_pages_per_fmr = fmr_message_size;
+ fmr_param.max_pages_per_fmr = fmr_message_size >> rds_ibdev->fmr_page_shift;
fmr_param.page_shift = rds_ibdev->fmr_page_shift;
fmr_param.access = (IB_ACCESS_LOCAL_WRITE |
IB_ACCESS_REMOTE_READ |
Index: ofa_1_3_kernel-20080113-0200/net/rds/ib.h
===================================================================
--- ofa_1_3_kernel-20080113-0200.orig/net/rds/ib.h
+++ ofa_1_3_kernel-20080113-0200/net/rds/ib.h
@@ -8,7 +8,7 @@
#define RDS_IB_RESOLVE_TIMEOUT_MS 5000
-#define RDS_FMR_SIZE 256
+#define RDS_FMR_SIZE (1024 * 1024)
#define RDS_FMR_POOL_SIZE 2048
#define RDS_IB_MAX_SGE 29
More information about the rds-devel
mailing list