linux/drivers/infiniband/ulp
Or Gerlitz 09b93088d7 IB: Add a QP creation flag to use GFP_NOIO allocations
This addresses a problem where NFS client writes over IPoIB connected
mode may deadlock on memory allocation/writeback.

The problem is not directly memory reclamation.  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, take a general approach and add a new QP creation
flag that tells the low-level hardware driver to use GFP_NOIO for the
memory allocations related to the new QP.

Use the new flag in the ipoib connected mode path, and if the driver
doesn't support it, re-issue the QP creation without the flag.

Signed-off-by: Mel Gorman <mgorman@suse.de>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
2014-06-02 14:58:11 -07:00
..
ipoib IB: Add a QP creation flag to use GFP_NOIO allocations 2014-06-02 14:58:11 -07:00
iser IB/iser: Bump driver version to 1.3 2014-04-01 11:09:46 -07:00
isert target: Pass in transport supported PI at session initialization 2014-04-07 01:48:54 -07:00
srp IB/srp: Fix a race condition between failing I/O and I/O completion 2014-03-24 10:05:31 -07:00
srpt ib_srpt: Use correct ib_sg_dma primitives 2014-04-11 15:31:20 -07:00