> [5416523.203047] ib_srpt: Received SRP_LOGIN_REQ with i_port_id
> 0x0:0x2c903004ecf8b, t_port_id 0x2c903004ecf82:0x2c903004ecf82 and
> it_iu_len 260 on port 1 (guid=0xfe80000000000000:0x2c903004ecf83)
> [5416523.204736] kworker/0:4: page allocation failure: order:4, mode:0x40d0
> [5416523.204738] Pid: 17674, comm: kworker/0:4 Not tainted 3.2.15+ #5
> [5416523.204740] Call Trace:
> [5416523.204745] [<ffffffff810d3d6b>] warn_alloc_failed+0xeb/0x130
> [5416523.204747] [<ffffffff810d6720>] ? drain_pages+0xa0/0xa0
> [5416523.204749] [<ffffffff810d6731>] ? drain_local_pages+0x11/0x20
> [5416523.204751] [<ffffffff810d6ec2>] __alloc_pages_nodemask+0x5f2/0x820
> [5416523.204754] [<ffffffff8110c4b1>] alloc_pages_current+0xa1/0x110
> [5416523.204756] [<ffffffff810d3829>] __get_free_pages+0x9/0x40
> [5416523.204759] [<ffffffff81113a3a>] kmalloc_order_trace+0x3a/0xb0
> [5416523.204761] [<ffffffff8111502e>] __kmalloc+0xee/0x140
> [5416523.204764] [<ffffffff81445954>] ? mlx4_buf_write_mtt+0xb4/0xd0
> [5416523.204768] [<ffffffff8153cd62>] create_qp_common.clone.17+0x6c2/0x990

So the issue I guess is memory fragementation -- we're trying to
do an order 4 allocation, ie 16 contiguous pages, and no so free
space is available.

I guess this allocation is:

                qp->sq.wrid  = kmalloc(qp->sq.wqe_cnt * sizeof (u64), 
GFP_KERNEL);

in create_qp_common().  I don't have the SCST code handy but
the in-tree SRP target that was ported from it creates very big
send queues so that explains why we consume so much data.

I have to think about the best way to fix this.  We could just
convert to vmalloc() here but I'm not thrilled about consuming
vmalloc() space (on modern 64-bit architectures it's a non-issue
but it's going to cause issues for people on smaller systems).
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to