All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chuck Lever <chuck.lever@oracle.com>
To: linux-nfs@vger.kernel.org
Cc: neilb@suse.de
Subject: [PATCH v5 11/13] NFSD: Refactor find_file()
Date: Mon, 24 Oct 2022 18:38:02 -0400	[thread overview]
Message-ID: <166665108230.50761.12047289373435044414.stgit@klimt.1015granger.net> (raw)
In-Reply-To: <166664935937.50761.7812494396457965637.stgit@klimt.1015granger.net>

find_file() is now the only caller of find_file_locked(), so just
fold these two together.

Name nfs4_file-related helpers consistently. There are already
nfs4_file_yada functions, so let's go with the same convention used
by put_nfs4_file(): find_nfs4_file().

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
 fs/nfsd/nfs4state.c |   35 ++++++++++++++---------------------
 1 file changed, 14 insertions(+), 21 deletions(-)

diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index 529995a9e916..abed795bb4ec 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -4666,31 +4666,23 @@ move_to_close_lru(struct nfs4_ol_stateid *s, struct net *net)
 		nfs4_put_stid(&last->st_stid);
 }
 
-/* search file_hashtbl[] for file */
-static struct nfs4_file *
-find_file_locked(const struct svc_fh *fh, unsigned int hashval)
+static noinline_for_stack struct nfs4_file *
+find_nfs4_file(const struct svc_fh *fhp)
 {
-	struct nfs4_file *fp;
+	unsigned int hashval = file_hashval(fhp);
+	struct nfs4_file *fi = NULL;
 
-	hlist_for_each_entry_rcu(fp, &file_hashtbl[hashval], fi_hash,
-				lockdep_is_held(&state_lock)) {
-		if (fh_match(&fp->fi_fhandle, &fh->fh_handle)) {
-			if (refcount_inc_not_zero(&fp->fi_ref))
-				return fp;
+	rcu_read_lock();
+	hlist_for_each_entry_rcu(fi, &file_hashtbl[hashval], fi_hash,
+				 lockdep_is_held(&state_lock)) {
+		if (fh_match(&fi->fi_fhandle, &fhp->fh_handle)) {
+			if (!refcount_inc_not_zero(&fi->fi_ref))
+				fi = NULL;
+			break;
 		}
 	}
-	return NULL;
-}
-
-static struct nfs4_file * find_file(struct svc_fh *fh)
-{
-	struct nfs4_file *fp;
-	unsigned int hashval = file_hashval(fh);
-
-	rcu_read_lock();
-	fp = find_file_locked(fh, hashval);
 	rcu_read_unlock();
-	return fp;
+	return fi;
 }
 
 /*
@@ -4741,9 +4733,10 @@ nfs4_share_conflict(struct svc_fh *current_fh, unsigned int deny_type)
 	struct nfs4_file *fp;
 	__be32 ret = nfs_ok;
 
-	fp = find_file(current_fh);
+	fp = find_nfs4_file(current_fh);
 	if (!fp)
 		return ret;
+
 	/* Check for conflicting share reservations */
 	spin_lock(&fp->fi_lock);
 	if (fp->fi_share_deny & deny_type)



  parent reply	other threads:[~2022-10-25  0:18 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-24 22:36 [PATCH v5 00/13] A course change, for sure Chuck Lever
2022-10-24 22:36 ` [PATCH v5 01/13] NFSD: Pass the target nfsd_file to nfsd_commit() Chuck Lever
2022-10-24 22:37 ` [PATCH v5 02/13] NFSD: Revert "NFSD: NFSv4 CLOSE should release an nfsd_file immediately" Chuck Lever
2022-10-24 22:37 ` [PATCH v5 03/13] NFSD: Add an NFSD_FILE_GC flag to enable nfsd_file garbage collection Chuck Lever
2022-10-24 22:37 ` [PATCH v5 04/13] NFSD: Clean up nfs4_preprocess_stateid_op() call sites Chuck Lever
2022-10-24 22:37 ` [PATCH v5 05/13] NFSD: Trace delegation revocations Chuck Lever
2022-10-24 22:37 ` [PATCH v5 06/13] NFSD: Use const pointers as parameters to fh_ helpers Chuck Lever
2022-10-24 22:37 ` [PATCH v5 07/13] NFSD: Update file_hashtbl() helpers Chuck Lever
2022-10-24 22:37 ` [PATCH v5 08/13] NFSD: Clean up nfsd4_init_file() Chuck Lever
2022-10-24 22:37 ` [PATCH v5 09/13] NFSD: Add a remove_nfs4_file() helper Chuck Lever
2022-10-24 22:37 ` [PATCH v5 10/13] NFSD: Clean up find_or_add_file() Chuck Lever
2022-10-24 22:38 ` Chuck Lever [this message]
2022-10-24 23:22   ` [PATCH v5 11/13] NFSD: Refactor find_file() NeilBrown
2022-10-24 22:38 ` [PATCH v5 12/13] NFSD: Allocate an rhashtable for nfs4_file objects Chuck Lever
2022-10-24 23:37   ` NeilBrown
2022-10-25  0:13     ` Chuck Lever III
2022-10-25  2:26       ` NeilBrown
2022-10-24 22:38 ` [PATCH v5 13/13] NFSD: Use rhashtable for managing " Chuck Lever
2022-10-24 23:43   ` NeilBrown
2022-10-25  0:19     ` Chuck Lever III
2022-10-25  1:01       ` NeilBrown
2022-10-25 16:58         ` Chuck Lever III

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=166665108230.50761.12047289373435044414.stgit@klimt.1015granger.net \
    --to=chuck.lever@oracle.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=neilb@suse.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.