• Or Gerlitz's avatar
    IB: Add a QP creation flag to use GFP_NOIO allocations · 09b93088
    Or Gerlitz authored
    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: default avatarMel Gorman <mgorman@suse.de>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
    09b93088
ipoib_cm.c 42.3 KB