Re: [PATCHv1 1/1] IB/srp: fix invalid indirect_sg_entries parameter value

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




----- Original Message -----
> From: "Bart Van Assche" <Bart.VanAssche@xxxxxxxxxxx>
> To: maxg@xxxxxxxxxxxx, linux-rdma@xxxxxxxxxxxxxxx
> Cc: israelr@xxxxxxxxxxxx
> Sent: Tuesday, January 3, 2017 12:59:49 PM
> Subject: Re: [PATCHv1 1/1] IB/srp: fix invalid indirect_sg_entries parameter value
> 
> On Tue, 2017-01-03 at 15:51 +0200, Max Gurtovoy wrote:
> > From: Israel Rukshin <israelr@xxxxxxxxxxxx>
> > 
> > After setting indirect_sg_entries module_param to huge value (e.g 500,000),
> > srp_alloc_req_data() fails to allocate indirect descriptors for the request
> > ring (kmalloc fails). This commit enforces the maximum value of
> > indirect_sg_entries
> > to be SG_MAX_SEGMENTS as signified in module param description.
> > 
> > Signed-off-by: Israel Rukshin <israelr@xxxxxxxxxxxx>
> > Signed-off-by: Max Gurtovoy <maxg@xxxxxxxxxxxx>
> > ---
> >  drivers/infiniband/ulp/srp/ib_srp.c | 7 +++++++
> >  1 file changed, 7 insertions(+)
> > 
> > diff --git a/drivers/infiniband/ulp/srp/ib_srp.c
> > b/drivers/infiniband/ulp/srp/ib_srp.c
> > index 0f67cf9..ccdd2c2 100644
> > --- a/drivers/infiniband/ulp/srp/ib_srp.c
> > +++ b/drivers/infiniband/ulp/srp/ib_srp.c
> > @@ -3676,6 +3676,7 @@ static struct srp_function_template
> > ib_srp_transport_functions = {
> >  static int __init srp_init_module(void)
> >  {
> >  	int ret;
> > +	unsigned int max_indirect_sg_entries = SG_MAX_SEGMENTS;
> >  
> >  	if (srp_sg_tablesize) {
> >  		pr_warn("srp_sg_tablesize is deprecated, please use cmd_sg_entries\n");
> > @@ -3699,6 +3700,12 @@ static int __init srp_init_module(void)
> >  		indirect_sg_entries = cmd_sg_entries;
> >  	}
> >  
> > +	if (indirect_sg_entries > max_indirect_sg_entries) {
> > +		pr_warn("Clamping indirect_sg_entries to %u\n",
> > +			max_indirect_sg_entries);
> > +		indirect_sg_entries = max_indirect_sg_entries;
> > +	}
> > +
> >  	srp_remove_wq = create_workqueue("srp_remove");
> >  	if (!srp_remove_wq) {
> >  		ret = -ENOMEM;
> 
> Hello Max,
> 
> That's a good catch, but why has the max_indirect_sg_entries variable been
> introduced? Can it be left out?
> 
> Thanks,
> 
> Bart.N�����r��y���b�X��ǧv�^�)޺{.n�+����{��ٚ�{ay�ʇڙ�,j��f���h���z��w������j:+v���w�j�m��������zZ+��ݢj"��

I have never had to set mine that high even when I was testing against the DDN arrays.
I run my tests with the module parameters set this way.

options ib_srp cmd_sg_entries=255 indirect_sg_entries=2048 

I thought 2048 was the max.

parm:           indirect_sg_entries:Default max number of gather/scatter entries (default is 12, max is 2048) (uint)

Thanks
Laurence
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux