From: "J. Bruce Fields" <bfields@redhat.com>
To: linux-nfs@vger.kernel.org
Cc: "J. Bruce Fields" <bfields@redhat.com>
Subject: [PATCH 1/6] nfsd4: split up nfsd_break_deleg_cb
Date: Tue, 8 Feb 2011 23:55:46 -0500 [thread overview]
Message-ID: <1297227351-15365-2-git-send-email-bfields@redhat.com> (raw)
In-Reply-To: <1297227351-15365-1-git-send-email-bfields@redhat.com>
We'll be adding some more code here soon.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
---
fs/nfsd/nfs4state.c | 35 +++++++++++++++++------------------
1 files changed, 17 insertions(+), 18 deletions(-)
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index d98d021..b5bdc33 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -2329,23 +2329,8 @@ nfs4_file_downgrade(struct nfs4_file *fp, unsigned int share_access)
nfs4_file_put_access(fp, O_RDONLY);
}
-/*
- * Spawn a thread to perform a recall on the delegation represented
- * by the lease (file_lock)
- *
- * Called from break_lease() with lock_flocks() held.
- * Note: we assume break_lease will only call this *once* for any given
- * lease.
- */
-static
-void nfsd_break_deleg_cb(struct file_lock *fl)
+static void nfsd_break_one_deleg(struct nfs4_delegation *dp)
{
- struct nfs4_delegation *dp = (struct nfs4_delegation *)fl->fl_owner;
-
- dprintk("NFSD nfsd_break_deleg_cb: dp %p fl %p\n",dp,fl);
- if (!dp)
- return;
-
/* We're assuming the state code never drops its reference
* without first removing the lease. Since we're in this lease
* callback (and since the lease code is serialized by the kernel
@@ -2360,15 +2345,29 @@ void nfsd_break_deleg_cb(struct file_lock *fl)
/* only place dl_time is set. protected by lock_flocks*/
dp->dl_time = get_seconds();
+ nfsd4_cb_recall(dp);
+}
+
+/*
+ * Called from break_lease() with lock_flocks() held.
+ * Note: we assume break_lease will only call this *once* for any given
+ * lease.
+ */
+static
+void nfsd_break_deleg_cb(struct file_lock *fl)
+{
+ struct nfs4_delegation *dp = (struct nfs4_delegation *)fl->fl_owner;
+
+ BUG_ON(!dp);
/*
* We don't want the locks code to timeout the lease for us;
* we'll remove it ourself if the delegation isn't returned
- * in time.
+ * in time:
*/
fl->fl_break_time = 0;
+ nfsd_break_one_deleg(dp);
dp->dl_file->fi_had_conflict = true;
- nfsd4_cb_recall(dp);
}
static
--
1.7.1
next prev parent reply other threads:[~2011-02-09 4:55 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-09 4:55 Fix a 2.6.38 delegation regression J. Bruce Fields
2011-02-09 4:55 ` J. Bruce Fields [this message]
2011-02-09 5:01 ` [PATCH 1/6] nfsd4: split up nfsd_break_deleg_cb Christoph Hellwig
2011-02-09 15:14 ` J. Bruce Fields
2011-02-09 16:28 ` Jim Rees
2011-02-15 11:14 ` Christoph Hellwig
2011-02-15 12:09 ` Jim Rees
2011-02-09 4:55 ` [PATCH 2/6] nfsd4: add helper function for lease setup J. Bruce Fields
2011-02-09 4:55 ` [PATCH 3/6] nfsd4: fix leak on allocation error J. Bruce Fields
2011-02-09 4:55 ` [PATCH 4/6] nfsd4: split lease setting into separate function J. Bruce Fields
2011-02-09 4:55 ` [PATCH 5/6] nfsd4: remove unused deleg dprintk's J. Bruce Fields
2011-02-09 4:55 ` [PATCH 6/6] nfsd4: modify fi_delegations under recall_lock J. Bruce Fields
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=1297227351-15365-2-git-send-email-bfields@redhat.com \
--to=bfields@redhat.com \
--cc=linux-nfs@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 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.