[lkml]   [2014]   [May]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subject[PATCH v1 for-next 0/3] IB: Use GFP_NOIO calls in IPoIB connected mode TX path
Hi Roland,

This series is a refactored form of the one posted by Jiri Kosina
to LKML and netdev according to the discussion that followed
and the guidelines you provided here

Basically, the functionality changes introduced by this series fully
reside on the IB side of things, so I am only posting the actual patches
to linux-rdma with CC on the cover-letter to the lists that were on V0.


As described in the change log of patch #2 this series comes to address
a problem whereby NFS client writes would enter uninterruptible sleep
forever. The issue happened when using NFS over IPoIB connected mode.

The problem encountered was described as follows: it's not memory
reclamation that is the problem as such. There is an indirect dependency
between network filesystems writing back pages and ipoib_cm_tx_init()
due to how a kworker is used. Page reclaim cannot make forward progress
until ipoib_cm_tx_init() succeeds and it is stuck in page reclaim itself
waiting for network transmission. Ordinarily this situation may be
avoided by having the caller use GFP_NOFS but ipoib_cm_tx_init()
does not have that information.

To address this, we take a more general approach vs. V0 and generalize
the solution such that when the new QP creation flag is provided, the
HW driver should use a GFP_NOIO for the memory allocations related
to the new QP.

changes from V0:
- removed the module param for IPoIB, the connected mode code would
attempt to use GFP_NOIO for the QP creation and fallback to GFP_KERNEL
(as before) if the HW driver doesn't support that. This approach will let

Jiri Kosina (1):
mlx4: Enhance the QP creation path to use a given GFP directive

Or Gerlitz (2):
IB: Return error when QP creation are provided for driver not supporting that
IB: Add a QP creation flag to allow specifying a NOIO allocation directive

drivers/infiniband/hw/mlx4/cq.c | 6 ++--
drivers/infiniband/hw/mlx4/mlx4_ib.h | 1 +
drivers/infiniband/hw/mlx4/qp.c | 30 +++++++++++--------
drivers/infiniband/hw/mlx4/srq.c | 7 ++--
drivers/infiniband/hw/qib/qib_qp.c | 3 +-
drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 3 ++
drivers/infiniband/ulp/ipoib/ipoib_cm.c | 19 ++++++++++--
drivers/net/ethernet/mellanox/mlx4/alloc.c | 27 +++++++++--------
drivers/net/ethernet/mellanox/mlx4/cq.c | 4 +-
drivers/net/ethernet/mellanox/mlx4/en_rx.c | 6 ++--
drivers/net/ethernet/mellanox/mlx4/en_tx.c | 2 +-
drivers/net/ethernet/mellanox/mlx4/icm.c | 7 ++--
drivers/net/ethernet/mellanox/mlx4/icm.h | 3 +-
drivers/net/ethernet/mellanox/mlx4/mlx4.h | 4 +-
drivers/net/ethernet/mellanox/mlx4/mr.c | 17 ++++++-----
drivers/net/ethernet/mellanox/mlx4/qp.c | 20 ++++++------
.../net/ethernet/mellanox/mlx4/resource_tracker.c | 4 +-
drivers/net/ethernet/mellanox/mlx4/srq.c | 4 +-
include/linux/mlx4/device.h | 10 ++++--
include/rdma/ib_verbs.h | 1 +
20 files changed, 104 insertions(+), 74 deletions(-)

Cc: Jiri Kosina <>
Cc: Mel Gorman <>
Cc: linux-kernel <>

 \ /
  Last update: 2014-05-11 14:41    [W:0.247 / U:3.104 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site