The number of CQ entries passed to ibv_create_cq() was copied from the IB device attributes (device_attr.max_cqe). Some versions of IB stack report a very large number there. Using this number may lead to consumption of unnecessary resources or even failure to create CQ. This patch limits the number of CQ entries to a reasonable value. Signed-off-by: Roi Dayan <roid@xxxxxxxxxxxx> --- usr/iscsi/iser.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/usr/iscsi/iser.c b/usr/iscsi/iser.c index b7152ae..656a8e0 100644 --- a/usr/iscsi/iser.c +++ b/usr/iscsi/iser.c @@ -84,6 +84,7 @@ char *iser_portal_addr; #define DEFAULT_POOL_SIZE_MB 1024 #define ISER_MAX_QUEUE_CMD 128 /* iSCSI cmd window size */ +#define MAX_CQ_ENTRIES (128 * 1024) #define MASK_BY_BIT(b) ((1UL << b) - 1) #define ALIGN_TO_BIT(x, b) ((((unsigned long)x) + MASK_BY_BIT(b)) & \ @@ -3266,7 +3267,7 @@ static int iser_device_init(struct iser_device *dev) eprintf("ibv_query_device failed, %m\n"); goto out; } - cqe_num = dev->device_attr.max_cqe; + cqe_num = min(dev->device_attr.max_cqe, MAX_CQ_ENTRIES); dprintf("max %d CQEs\n", cqe_num); err = -1; -- 1.7.8.2 -- To unsubscribe from this list: send the line "unsubscribe stgt" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html