From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Jeff Layton <jlayton@redhat.com>,
"J. Bruce Fields" <bfields@redhat.com>
Subject: [PATCH 3.10 27/46] nfsd: dont try to reuse an expired DRC entry off the list
Date: Fri, 4 Jul 2014 15:19:31 -0700 [thread overview]
Message-ID: <20140704221603.515056385@linuxfoundation.org> (raw)
In-Reply-To: <20140704221602.280733370@linuxfoundation.org>
3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jeff Layton <jlayton@redhat.com>
commit a0ef5e19684f0447da9ff0654a12019c484f57ca upstream.
Currently when we are processing a request, we try to scrape an expired
or over-limit entry off the list in preference to allocating a new one
from the slab.
This is unnecessarily complicated. Just use the slab layer.
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/nfsd/nfscache.c | 36 ++++--------------------------------
1 file changed, 4 insertions(+), 32 deletions(-)
--- a/fs/nfsd/nfscache.c
+++ b/fs/nfsd/nfscache.c
@@ -129,13 +129,6 @@ nfsd_reply_cache_alloc(void)
}
static void
-nfsd_reply_cache_unhash(struct svc_cacherep *rp)
-{
- hlist_del_init(&rp->c_hash);
- list_del_init(&rp->c_lru);
-}
-
-static void
nfsd_reply_cache_free_locked(struct svc_cacherep *rp)
{
if (rp->c_type == RC_REPLBUFF && rp->c_replvec.iov_base) {
@@ -402,22 +395,8 @@ nfsd_cache_lookup(struct svc_rqst *rqstp
/*
* Since the common case is a cache miss followed by an insert,
- * preallocate an entry. First, try to reuse the first entry on the LRU
- * if it works, then go ahead and prune the LRU list.
+ * preallocate an entry.
*/
- spin_lock(&cache_lock);
- if (!list_empty(&lru_head)) {
- rp = list_first_entry(&lru_head, struct svc_cacherep, c_lru);
- if (nfsd_cache_entry_expired(rp) ||
- num_drc_entries >= max_drc_entries) {
- nfsd_reply_cache_unhash(rp);
- prune_cache_entries();
- goto search_cache;
- }
- }
-
- /* No expired ones available, allocate a new one. */
- spin_unlock(&cache_lock);
rp = nfsd_reply_cache_alloc();
spin_lock(&cache_lock);
if (likely(rp)) {
@@ -425,7 +404,9 @@ nfsd_cache_lookup(struct svc_rqst *rqstp
drc_mem_usage += sizeof(*rp);
}
-search_cache:
+ /* go ahead and prune the cache */
+ prune_cache_entries();
+
found = nfsd_cache_search(rqstp, csum);
if (found) {
if (likely(rp))
@@ -439,15 +420,6 @@ search_cache:
goto out;
}
- /*
- * We're keeping the one we just allocated. Are we now over the
- * limit? Prune one off the tip of the LRU in trade for the one we
- * just allocated if so.
- */
- if (num_drc_entries >= max_drc_entries)
- nfsd_reply_cache_free_locked(list_first_entry(&lru_head,
- struct svc_cacherep, c_lru));
-
nfsdstats.rcmisses++;
rqstp->rq_cacherep = rp;
rp->c_state = RC_INPROG;
next prev parent reply other threads:[~2014-07-04 22:19 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-04 22:19 [PATCH 3.10 00/46] 3.10.47-stable review Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 01/46] target: Fix left-over se_lun->lun_sep pointer OOPs Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 02/46] iscsi-target: Avoid rejecting incorrect ITT for Data-Out Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 03/46] iscsi-target: Explicily clear login response PDU in exception path Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 04/46] Input: elantech - deal with clickpads reporting right button events Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 05/46] Input: elantech - dont set bit 1 of reg_10 when the no_hw_res quirk is set Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 06/46] PCI: Add new ID for Intel GPU "spurious interrupt" quirk Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 07/46] PCI: Fix incorrect vgaarb conditional in WARN_ON() Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 08/46] mtip32xx: Fix ERO and NoSnoop values in PCIe upstream on AMD systems Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 09/46] mtip32xx: Increase timeout for STANDBY IMMEDIATE command Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 10/46] mtip32xx: Remove dfs_parent after pci unregister Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 11/46] recordmcount/MIPS: Fix possible incorrect mcount_loc table entries in modules Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 12/46] MIPS: MSC: Prevent out-of-bounds writes to MIPS SC ioremapd region Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 13/46] UBIFS: fix an mmap and fsync race condition Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 14/46] UBIFS: Remove incorrect assertion in shrink_tnc() Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 15/46] watchdog: sp805: Set watchdog_device->timeout from ->set_timeout() Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 16/46] watchdog: ath79_wdt: avoid spurious restarts on AR934x Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 17/46] IB/qib: Fix port in pkey change event Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 18/46] IB/ipath: Translate legacy diagpkt into newer extended diagpkt Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 19/46] IB/srp: Fix a sporadic crash triggered by cable pulling Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 20/46] IB/umad: Fix error handling Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 21/46] IB/umad: Fix use-after-free on close Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 22/46] SUNRPC: Fix a module reference leak in svc_handle_xprt Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 23/46] pNFS: Handle allocation errors correctly in filelayout_alloc_layout_hdr() Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 24/46] nfsd4: fix FREE_STATEID lockowner leak Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 25/46] nfsd: getattr for FATTR4_WORD0_FILES_AVAIL needs the statfs buffer Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 26/46] NFS: Dont declare inode uptodate unless all attributes were checked Greg Kroah-Hartman
2014-07-04 22:19 ` Greg Kroah-Hartman [this message]
2014-07-04 22:19 ` [PATCH 3.10 28/46] nfsd: dont halt scanning the DRC LRU list when theres an RC_INPROG entry Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 29/46] powerpc/pseries: Fix overwritten PE state Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 30/46] powerpc: 64bit sendfile is capped at 2GB Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 31/46] powerpc: fix typo CONFIG_PMAC Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 32/46] powerpc: fix typo CONFIG_PPC_CPU Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 33/46] powerpc: Add AT_HWCAP2 to indicate V.CRYPTO category support Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 34/46] reiserfs: call truncate_setsize under tailpack mutex Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 35/46] MIPS: KVM: Remove redundant NULL checks before kfree() Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 36/46] MIPS: KVM: Fix memory leak on VCPU Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 37/46] ipvs: Fix panic due to non-linear skb Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 38/46] ptrace,x86: force IRET path after a ptrace_stop() Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 39/46] mei: me: read H_CSR after asserting reset Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 40/46] mei: me: fix hw ready reset flow Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 41/46] extcon: max77693: Fix two NULL pointer exceptions on missing pdata Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 42/46] netfilter: ipt_ULOG: fix info leaks Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 43/46] Documentation/SubmittingPatches: describe the Fixes: tag Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 44/46] tracing: Try again for saved cmdline if failed due to locking Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 45/46] tracing: Fix syscall_*regfunc() vs copy_process() race Greg Kroah-Hartman
2014-07-04 22:19 ` [PATCH 3.10 46/46] ALSA: hda - Adjust speaker HPF and add LED support for HP Spectre 13 Greg Kroah-Hartman
2014-07-05 5:43 ` [PATCH 3.10 00/46] 3.10.47-stable review Guenter Roeck
2014-07-05 7:04 ` Satoru Takeuchi
2014-07-05 19:11 ` Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140704221603.515056385@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=bfields@redhat.com \
--cc=jlayton@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).