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 https://lkml.org/lkml/2014/3/5/250
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. Or. 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 <jkos...@suse.cz> Cc: Mel Gorman <mgor...@suse.de> Cc: net...@vger.kernel.org Cc: linux-kernel <linux-kernel@vger.kernel.org> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/