linux/drivers/infiniband/ulp/ipoib
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_cm.c IB: Add a QP creation flag to use GFP_NOIO allocations 2014-06-02 14:58:11 -07:00
ipoib_ethtool.c IPoIB: Add version and firmware info to ethtool reporting 2013-02-19 08:21:36 -08:00
ipoib_fs.c Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
ipoib_ib.c IPoIB: Add path query flushing in ipoib_ib_dev_cleanup 2013-11-08 14:42:49 -08:00
ipoib_main.c IPoIB: Report operstate consistently when brought up without a link 2014-01-22 23:01:05 -08:00
ipoib_multicast.c IPoIB: Start multicast join process only on active ports 2013-11-08 14:42:49 -08:00
ipoib_netlink.c infiniband: make sure the src net is infiniband when create new link 2014-01-03 20:38:56 -05:00
ipoib_verbs.c IB/core: Add flow steering support for IPoIB UD traffic 2014-01-14 14:06:50 -08:00
ipoib_vlan.c IPoIB: Fix deadlock between dev_change_flags() and __ipoib_dev_flush() 2013-11-08 14:42:49 -08:00
ipoib.h IPoIB: Fix usage of uninitialized multicast objects 2013-11-08 14:42:49 -08:00
Kconfig kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT 2011-01-20 17:02:05 -08:00
Makefile IB/ipoib: Add rtnl_link_ops support 2012-09-20 16:49:17 -04:00