From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ig0-f170.google.com (mail-ig0-f170.google.com [209.85.213.170]) by kanga.kvack.org (Postfix) with ESMTP id D1BF9900016 for ; Wed, 3 Jun 2015 16:14:38 -0400 (EDT) Received: by igblz2 with SMTP id lz2so23748863igb.1 for ; Wed, 03 Jun 2015 13:14:38 -0700 (PDT) Received: from mail-ig0-f182.google.com (mail-ig0-f182.google.com. [209.85.213.182]) by mx.google.com with ESMTPS id yp6si1666096icb.65.2015.06.03.13.14.37 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jun 2015 13:14:37 -0700 (PDT) Received: by igbpi8 with SMTP id pi8so121703815igb.1 for ; Wed, 03 Jun 2015 13:14:37 -0700 (PDT) From: Jeff Layton Subject: [PATCH v3 0/5] sunrpc: clean up "swapper" xprt handling Date: Wed, 3 Jun 2015 16:14:24 -0400 Message-Id: <1433362469-2615-1-git-send-email-jeff.layton@primarydata.com> Sender: owner-linux-mm@kvack.org List-ID: To: Trond Myklebust Cc: linux-nfs@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Mel Gorman , Jerome Marchand , Chuck Lever v3: - make "enable" operations return -EINVAL when CONFIG_NFS_SWAP is disabled. v2: - don't take xprt lock unless we need to manipulate the memalloc flag - add new xprt operations for swap enable/disable This series is a (small) overhaul of the swap-over-NFS code. The main impetus is to fix the problem reported by Jerome Marchand. We currently hold the rcu_read_lock when calling xs_swapper and that's just plain wrong. The first patch in this series should fix that problem, and also clean up a bit of a layering violation. The other focus of this set is to change how the swapper refcounting works. Right now, it's only tracked in the rpc_xprt, and there seem to be some gaps in its coverage -- places where we should taking or dropping references but aren't. This changes it so that the clnt tracks the number of swapfiles that it has, and the xprt tracks the number of "swappable" clients. It also ensures that we only call sk_set_memalloc once per socket. I believe that's the correct thing to do as the main reason for the memalloc_socks counter is to track whether we have _any_ memalloc-enabled sockets. There is still some work to be done here as I think there remains some potential for races between swapon/swapoff, and reconnect or migration events. That will take some careful thought that I haven't the time to spend on at the moment. I don't think this set will make those races any worse though. Jeff Layton (5): sunrpc: keep a count of swapfiles associated with the rpc_clnt sunrpc: make xprt->swapper an atomic_t sunrpc: if we're closing down a socket, clear memalloc on it first sunrpc: lock xprt before trying to set memalloc on the sockets sunrpc: turn swapper_enable/disable functions into rpc_xprt_ops fs/nfs/file.c | 15 +------ include/linux/sunrpc/clnt.h | 1 + include/linux/sunrpc/sched.h | 16 ++++++++ include/linux/sunrpc/xprt.h | 17 +++++++- net/sunrpc/clnt.c | 67 +++++++++++++++++++++++++++----- net/sunrpc/xprtrdma/transport.c | 15 ++++++- net/sunrpc/xprtsock.c | 86 +++++++++++++++++++++++++++++++++-------- 7 files changed, 175 insertions(+), 42 deletions(-) -- 2.4.2 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org