• Ilya Dryomov's avatar
    Revert "libceph: use memalloc flags for net IO" · fe4d073f
    Ilya Dryomov authored
    commit 6d7fdb0a upstream.
    
    This reverts commit 89baaa57.
    
    Dirty page throttling should be sufficient for us in the general case
    so there is no need to use __GFP_MEMALLOC - it would be needed only in
    the swap-over-rbd case, which we currently don't support.  (It would
    probably take approximately the commit that is being reverted to add
    that support, but we would also need the "swap" option to distinguish
    from the general case and make sure swap ceph_client-s aren't shared
    with anything else.)  See ceph-devel threads [1] and [2] for the
    details of why enabling pfmemalloc reserves for all cases is a bad
    thing.
    
    On top of potential system lockups related to drained emergency
    reserves, this turned out to cause ceph lockups in case peers are on
    the same host and communicating via loopback due to sk_filter()
    dropping pfmemalloc skbs on the receiving side because the receiving
    loopback socket is not tagged with SOCK_MEMALLOC.
    
    [1] "SOCK_MEMALLOC vs loopback"
        http://www.spinics.net/lists/ceph-devel/msg22998.html
    [2] "[PATCH] libceph: don't set memalloc flags in loopback case"
        http://www.spinics.net/lists/ceph-devel/msg23392.html
    
    Conflicts:
    	net/ceph/messenger.c [ context: tcp_nodelay option ]
    
    Cc: Mike Christie <michaelc@cs.wisc.edu>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Sage Weil <sage@redhat.com>
    Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
    Acked-by: default avatarMike Christie <michaelc@cs.wisc.edu>
    Acked-by: default avatarMel Gorman <mgorman@suse.de>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    fe4d073f
messenger.c 83.3 KB