All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Layton <jeff.layton@primarydata.com>
To: Kinglong Mee <kinglongmee@gmail.com>
Cc: "J. Bruce Fields" <bfields@fieldses.org>,
	Linux NFS Mailing List <linux-nfs@vger.kernel.org>,
	NeilBrown <neilb@suse.de>
Subject: Re: [PATCH 2/4] NFSD: Rervert "knfsd: locks: flag NFSv4-owned locks"
Date: Tue, 8 Jul 2014 07:03:20 -0400	[thread overview]
Message-ID: <20140708070320.1d5646f0@tlielax.poochiereds.net> (raw)
In-Reply-To: <53BB6445.3060508@gmail.com>

On Tue, 08 Jul 2014 11:23:49 +0800
Kinglong Mee <kinglongmee@gmail.com> wrote:

> On 7/8/2014 01:26, Jeff Layton wrote:
> > On Mon, 07 Jul 2014 22:12:21 +0800
> > Kinglong Mee <kinglongmee@gmail.com> wrote:
> > 
> >> Commit d5b9026a67 ([PATCH] knfsd: locks: flag NFSv4-owned locks) using
> >> fl_lmops field in file_lock for checking nfsd4 lockowner.
> >>
> >> But, commit 1a747ee0cc (locks: don't call ->copy_lock methods on return of conflicting locks) causes the fl_lmops of conflock for nfsd4_lock always be NULL.
> >>
> >> Also, commit 0996905f93 (lockd: posix_test_lock() should not call locks_copy_lock()) caused the fl_lmops of conflock for nfsd4_lockt always be NULL too.
> >>
> >> So that, using fl_lmops cannot checking nfsd4 lockowner for it always be NULL.
> >>
> >> This patch save the strhashval in nfs4_lockowner for searching lockownerlike before.
> >>
> >> Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
> >> ---
> >>  fs/nfsd/nfs4state.c | 35 +++++++++++++++++++++++------------
> >>  fs/nfsd/state.h     |  1 +
> >>  2 files changed, 24 insertions(+), 12 deletions(-)
> >>
> >> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> >> index 9b9474c..1b5afc1 100644
> >> --- a/fs/nfsd/nfs4state.c
> >> +++ b/fs/nfsd/nfs4state.c
> >> @@ -4282,18 +4282,30 @@ nfs4_transform_lock_offset(struct file_lock *lock)
> >>  		lock->fl_end = OFFSET_MAX;
> >>  }
> >>  
> >> -/* Hack!: For now, we're defining this just so we can use a pointer to it
> >> - * as a unique cookie to identify our (NFSv4's) posix locks. */
> >> -static const struct lock_manager_operations nfsd_posix_mng_ops  = {
> >> -};
> >> +static bool
> >> +nfs4_verify_lock_stateowner(struct nfs4_lockowner *lo, struct nfsd_net *nn)
> >> +{
> >> +	struct nfs4_stateowner *local = NULL;
> >> +	unsigned hashval = lo->lo_hashval;
> >> +
> >> +	if (hashval >= OWNER_HASH_SIZE)
> >> +		return false;
> >> +
> >> +	list_for_each_entry(local, &nn->ownerstr_hashtbl[hashval], so_strhash) {
> >> +		if (local == &lo->lo_owner)
> >> +			return true;
> >> +	}
> >> +
> >> +	return false;
> >> +}
> >>  
> >>  static inline void
> >> -nfs4_set_lock_denied(struct file_lock *fl, struct nfsd4_lock_denied *deny)
> >> +nfs4_set_lock_denied(struct file_lock *fl, struct nfsd4_lock_denied *deny,
> >> +			struct nfsd_net *nn)
> >>  {
> >> -	struct nfs4_lockowner *lo;
> >> +	struct nfs4_lockowner *lo = (struct nfs4_lockowner *) fl->fl_owner;
> >>  
> >> -	if (fl->fl_lmops == &nfsd_posix_mng_ops) {
> >> -		lo = (struct nfs4_lockowner *) fl->fl_owner;
> >> +	if (nfs4_verify_lock_stateowner(lo, nn)) {
> >>  		deny->ld_owner.data = kmemdup(lo->lo_owner.so_owner.data,
> >>  					lo->lo_owner.so_owner.len, GFP_KERNEL);
> >>  		if (!deny->ld_owner.data)
> >> @@ -4350,6 +4362,7 @@ alloc_init_lock_stateowner(unsigned int strhashval, struct nfs4_client *clp, str
> >>  	if (!lo)
> >>  		return NULL;
> >>  	INIT_LIST_HEAD(&lo->lo_owner.so_stateids);
> >> +	lo->lo_hashval = strhashval;
> >>  	lo->lo_owner.so_is_open_owner = 0;
> >>  	/* It is the openowner seqid that will be incremented in encode in the
> >>  	 * case of new lockowners; so increment the lock seqid manually: */
> >> @@ -4564,7 +4577,6 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
> >>  	file_lock->fl_pid = current->tgid;
> >>  	file_lock->fl_file = filp;
> >>  	file_lock->fl_flags = FL_POSIX;
> >> -	file_lock->fl_lmops = &nfsd_posix_mng_ops;
> >>  	file_lock->fl_start = lock->lk_offset;
> >>  	file_lock->fl_end = last_byte_offset(lock->lk_offset, lock->lk_length);
> >>  	nfs4_transform_lock_offset(file_lock);
> >> @@ -4587,7 +4599,7 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
> >>  	case (EAGAIN):		/* conflock holds conflicting lock */
> >>  		status = nfserr_denied;
> >>  		dprintk("NFSD: nfsd4_lock: conflicting lock found!\n");
> >> -		nfs4_set_lock_denied(conflock, &lock->lk_denied);
> >> +		nfs4_set_lock_denied(conflock, &lock->lk_denied, nn);
> >>  		break;
> >>  	case (EDEADLK):
> >>  		status = nfserr_deadlock;
> >> @@ -4695,7 +4707,7 @@ nfsd4_lockt(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
> >>  
> >>  	if (file_lock->fl_type != F_UNLCK) {
> >>  		status = nfserr_denied;
> >> -		nfs4_set_lock_denied(file_lock, &lockt->lt_denied);
> >> +		nfs4_set_lock_denied(file_lock, &lockt->lt_denied, nn);
> >>  	}
> >>  out:
> >>  	nfs4_unlock_state();
> >> @@ -4746,7 +4758,6 @@ nfsd4_locku(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
> >>  	file_lock->fl_pid = current->tgid;
> >>  	file_lock->fl_file = filp;
> >>  	file_lock->fl_flags = FL_POSIX;
> >> -	file_lock->fl_lmops = &nfsd_posix_mng_ops;
> >>  	file_lock->fl_start = locku->lu_offset;
> >>  
> >>  	file_lock->fl_end = last_byte_offset(locku->lu_offset,
> >> diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h
> >> index 1848fed..9ecae58 100644
> >> --- a/fs/nfsd/state.h
> >> +++ b/fs/nfsd/state.h
> >> @@ -362,6 +362,7 @@ struct nfs4_openowner {
> >>  
> >>  struct nfs4_lockowner {
> >>  	struct nfs4_stateowner	lo_owner; /* must be first element */
> >> +	unsigned int		lo_hashval;
> > 
> > Actually, I have another comment here too. I'm not sure there's a lot
> > of value in tracking the lo_hashval here. Why not just recompute it in
> > nfs4_verify_lock_stateowner?
> 
> No, ownerstr_hashval() needs a client which holds the conflicting lock,
> in nfsd4_lock/nfsd4_lockt cannot know the client from vfs_lock_file()
>  or vfs_test_lock().
> 

Right, that was why I mentioned that you'd need to pass down the
nfs4_client pointer to these functions, and then use that to derive the
"nn".

> > 
> > You'd need to pass down a pointer to the nfs4_client in order to do
> > so, but you could do that instead of passing down 'nn' and then
> > just call net_generic on clp->net where you needed it.
> 
> I find patch "[PATCH v3 069/114] nfsd: Move the open owner hash table
> into struct nfs4_client" have remove the client argument from
> ownerstr_hashval().
> 
> So, the lo_hashval isn't needed after that patch.
> After Bruce merging that patch, I will resend a new patch recomputing
> the hash value instead recording in lo_hashval.
> 

Ok. I guess the only question is whether this is a bugfix that needs to
go in before those patches. If so, then we may want to do something
closer to this patch.

It's untested, but it should be OK now that we cache the clp in the
cstate. If this needs to go into 3.16 then we'll need to get that
pointer elsewhere, but that's doable.

-------------------------[snip]------------------------------

[PATCH] NFSD: Rervert "knfsd: locks: flag NFSv4-owned locks"

Commit d5b9026a67 ([PATCH] knfsd: locks: flag NFSv4-owned locks) using
fl_lmops field in file_lock for checking nfsd4 lockowner.

But, commit 1a747ee0cc (locks: don't call ->copy_lock methods on return of conflicting locks) causes the fl_lmops of conflock for nfsd4_lock always be NULL.

Also, commit 0996905f93 (lockd: posix_test_lock() should not call locks_copy_lock()) caused the fl_lmops of conflock for nfsd4_lockt always be NULL too.

So that, using fl_lmops cannot checking nfsd4 lockowner for it always be NULL.

Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
Signed-off-by: Jeff Layton <jlayton@primarydata.com>
---
 fs/nfsd/nfs4state.c | 34 ++++++++++++++++++++++------------
 1 file changed, 22 insertions(+), 12 deletions(-)

diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index c400ec17915e..00cd7fd17b0f 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -4312,18 +4312,29 @@ nfs4_transform_lock_offset(struct file_lock *lock)
 		lock->fl_end = OFFSET_MAX;
 }
 
-/* Hack!: For now, we're defining this just so we can use a pointer to it
- * as a unique cookie to identify our (NFSv4's) posix locks. */
-static const struct lock_manager_operations nfsd_posix_mng_ops  = {
-};
+static bool
+nfs4_verify_lock_stateowner(struct nfs4_lockowner *lo, struct nfs4_client *clp)
+{
+	struct nfs4_stateowner *local = NULL;
+	struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
+	unsigned int hashval = ownerstr_hashval(clp->cl_clientid.cl_id,
+						&lo->lo_owner.so_owner);
+
+	list_for_each_entry(local, &nn->ownerstr_hashtbl[hashval], so_strhash) {
+		if (local == &lo->lo_owner)
+			return true;
+	}
+
+	return false;
+}
 
 static inline void
-nfs4_set_lock_denied(struct file_lock *fl, struct nfsd4_lock_denied *deny)
+nfs4_set_lock_denied(struct file_lock *fl, struct nfsd4_lock_denied *deny,
+			struct nfs4_client *clp)
 {
-	struct nfs4_lockowner *lo;
+	struct nfs4_lockowner *lo = (struct nfs4_lockowner *)fl->fl_owner;
 
-	if (fl->fl_lmops == &nfsd_posix_mng_ops) {
-		lo = (struct nfs4_lockowner *) fl->fl_owner;
+	if (nfs4_verify_lock_stateowner(lo, clp)) {
 		deny->ld_owner.data = kmemdup(lo->lo_owner.so_owner.data,
 					lo->lo_owner.so_owner.len, GFP_KERNEL);
 		if (!deny->ld_owner.data)
@@ -4594,7 +4605,6 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	file_lock->fl_pid = current->tgid;
 	file_lock->fl_file = filp;
 	file_lock->fl_flags = FL_POSIX;
-	file_lock->fl_lmops = &nfsd_posix_mng_ops;
 	file_lock->fl_start = lock->lk_offset;
 	file_lock->fl_end = last_byte_offset(lock->lk_offset, lock->lk_length);
 	nfs4_transform_lock_offset(file_lock);
@@ -4617,7 +4627,8 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	case (EAGAIN):		/* conflock holds conflicting lock */
 		status = nfserr_denied;
 		dprintk("NFSD: nfsd4_lock: conflicting lock found!\n");
-		nfs4_set_lock_denied(conflock, &lock->lk_denied);
+		nfs4_set_lock_denied(conflock, &lock->lk_denied,
+					cstate->clp);
 		break;
 	case (EDEADLK):
 		status = nfserr_deadlock;
@@ -4725,7 +4736,7 @@ nfsd4_lockt(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 
 	if (file_lock->fl_type != F_UNLCK) {
 		status = nfserr_denied;
-		nfs4_set_lock_denied(file_lock, &lockt->lt_denied);
+		nfs4_set_lock_denied(file_lock, &lockt->lt_denied, cstate->clp);
 	}
 out:
 	nfs4_unlock_state();
@@ -4776,7 +4787,6 @@ nfsd4_locku(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	file_lock->fl_pid = current->tgid;
 	file_lock->fl_file = filp;
 	file_lock->fl_flags = FL_POSIX;
-	file_lock->fl_lmops = &nfsd_posix_mng_ops;
 	file_lock->fl_start = locku->lu_offset;
 
 	file_lock->fl_end = last_byte_offset(locku->lu_offset,
-- 
1.9.3



  reply	other threads:[~2014-07-08 11:03 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-07 14:12 [PATCH 2/4] NFSD: Rervert "knfsd: locks: flag NFSv4-owned locks" Kinglong Mee
2014-07-07 16:45 ` Jeff Layton
2014-07-08  2:30   ` Kinglong Mee
2014-07-07 17:26 ` Jeff Layton
2014-07-08  3:23   ` Kinglong Mee
2014-07-08 11:03     ` Jeff Layton [this message]
2014-07-08 12:26       ` Kinglong Mee
2014-07-08 12:39         ` Jeff Layton
2014-07-11 22:11           ` J. Bruce Fields
2014-08-02 14:45 ` [PATCH] fs/locks.c: Copy fl_lmops to conflock for nfsd using Kinglong Mee
2014-08-02 14:59   ` Trond Myklebust
     [not found]   ` <53DCF97D.3000605-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-08-02 23:05     ` Jeff Layton
2014-08-02 23:05       ` Jeff Layton
     [not found]       ` <20140802190505.442f07b8-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2014-08-05 19:14         ` J. Bruce Fields
2014-08-05 19:14           ` J. Bruce Fields
     [not found]           ` <20140805191458.GV23341-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2014-08-05 19:20             ` Jeff Layton
2014-08-05 19:20               ` Jeff Layton
     [not found] ` <53BAAAC5.9000106-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-08-06 13:33   ` [PATCH 1/3] NFSD: New FL_NFSD for marking file_lock belongs to NFSD Kinglong Mee
2014-08-06 13:33     ` Kinglong Mee
     [not found]     ` <53E22EA5.70708-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-08-06 13:35       ` [PATCH 2/3] NFSD: Increase the reference of lockowner when coping file_lock Kinglong Mee
2014-08-06 13:35         ` Kinglong Mee
     [not found]         ` <53E22F2C.8070900-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-08-06 13:38           ` [PATCH 3/3 RFC] fs/locks.c: Copy all infomation for conflock Kinglong Mee
2014-08-06 13:38             ` Kinglong Mee
2014-08-09 11:08           ` [PATCH 2/3] NFSD: Increase the reference of lockowner when coping file_lock Jeff Layton
2014-08-09 11:08             ` Jeff Layton
     [not found]             ` <20140809070818.4d939a6a-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2014-08-10 15:47               ` Kinglong Mee
2014-08-10 15:47                 ` Kinglong Mee
2014-08-09 10:51     ` [PATCH 1/3] NFSD: New FL_NFSD for marking file_lock belongs to NFSD Jeff Layton
     [not found]       ` <20140809065112.700e0ecc-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2014-08-10 12:46         ` Kinglong Mee
2014-08-10 12:46           ` Kinglong Mee
2014-08-10 15:38         ` [PATCH 1/3 v2] fs/locks.c: Copy all information for conflock Kinglong Mee
2014-08-10 15:38           ` Kinglong Mee
2014-08-15  0:07           ` [PATCH 2/5 v3] locks: Copy all infomation " Kinglong Mee
     [not found]             ` <53ED4F30.4060308-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-08-15 11:14               ` Jeff Layton
2014-08-15 11:14                 ` Jeff Layton
     [not found]                 ` <20140815071450.498949d8-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2014-08-15 14:33                   ` Kinglong Mee
2014-08-15 14:33                     ` Kinglong Mee
     [not found]                     ` <53EE1A4E.1010707-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-08-16 13:35                       ` Kinglong Mee
2014-08-16 13:35                         ` Kinglong Mee
     [not found]                         ` <53EF5E35.5090501-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-08-17 13:42                           ` Kinglong Mee
2014-08-17 13:42                             ` Kinglong Mee
     [not found]                             ` <53F0B13D.2040700-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-08-18 11:54                               ` Jeff Layton
2014-08-18 11:54                                 ` Jeff Layton
2014-08-19 15:10                                 ` Kinglong Mee
2014-08-15  0:10           ` [PATCH 4/5 v3] NFSD: New helper nfs4_get_stateowner() for atomic_inc reference Kinglong Mee
     [not found]           ` <53E791F1.40802-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-08-10 15:42             ` [PATCH 2/3 v2] fs/locks.c: New ops in file_lock_operations for copying/releasing owner Kinglong Mee
2014-08-10 15:42               ` Kinglong Mee
2014-08-10 15:43             ` [PATCH 3/3 v2] NFSD: Increase the reference of lockowner when coping file_lock Kinglong Mee
2014-08-10 15:43               ` Kinglong Mee
     [not found]               ` <53E7933D.80504-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-08-11 16:46                 ` Jeff Layton
2014-08-11 16:46                   ` Jeff Layton
     [not found]                   ` <20140811124610.16f49168-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2014-08-14 12:30                     ` Kinglong Mee
2014-08-14 12:30                       ` Kinglong Mee
2014-08-11 16:19             ` [PATCH 1/3 v2] fs/locks.c: Copy all information for conflock Jeff Layton
2014-08-11 16:19               ` Jeff Layton
     [not found]               ` <20140811121949.4c3d7894-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2014-08-11 16:25                 ` Joe Perches
2014-08-11 16:25                   ` Joe Perches
2014-08-14 12:59                   ` Kinglong Mee
2014-08-14 12:59                     ` Kinglong Mee
2014-08-14 12:26                 ` Kinglong Mee
2014-08-14 12:26                   ` Kinglong Mee
2014-08-14 14:00                   ` Jeff Layton
     [not found]                     ` <20140814100025.2b2f72db-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2014-08-14 14:04                       ` Kinglong Mee
2014-08-14 14:04                         ` Kinglong Mee
2014-08-15  0:02             ` [PATCH 1/5 v3] NFSD: Remove duplicate initialization of file_lock Kinglong Mee
2014-08-15  0:02               ` Kinglong Mee
     [not found]               ` <53ED4E2F.2010701-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-08-15 10:57                 ` Jeff Layton
2014-08-15 10:57                   ` Jeff Layton
     [not found]                   ` <20140815065741.42f18ec9-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2014-08-15 21:35                     ` J. Bruce Fields
2014-08-15 21:35                       ` J. Bruce Fields
2014-08-15  0:09             ` [PATCH 3/5 v3] locks: New ops in file_lock_operations for copy/release owner Kinglong Mee
2014-08-15  0:09               ` Kinglong Mee
2014-08-15  0:13             ` [PATCH 5/5 v3] NFSD: Increase the reference of lockowner when coping file_lock Kinglong Mee
2014-08-15  0:13               ` Kinglong Mee
2014-08-19 15:18               ` [PATCH 2/6 v4] locks: New ops in file_lock_operations for get/put owner Kinglong Mee
     [not found]                 ` <53F36AE2.7070507-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-08-19 19:42                   ` Jeff Layton
2014-08-19 19:42                     ` Jeff Layton
2014-08-19 15:21               ` [PATCH 3/6 v4] locks: Rename __locks_copy_lock() to locks_copy_conflock() Kinglong Mee
2014-08-19 19:46                 ` Jeff Layton
     [not found]               ` <53ED5093.6000308-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-08-19 15:16                 ` [PATCH 1/6 v4] NFSD: Remove the duplicate initialize of file_lock Kinglong Mee
2014-08-19 15:16                   ` Kinglong Mee
2014-08-19 15:24                 ` [PATCH 4/6 v4] locks: Copy fl_lmops information for conflock in, locks_copy_conflock() Kinglong Mee
2014-08-19 15:24                   ` Kinglong Mee
2014-08-19 20:08                   ` Jeff Layton
2014-08-19 15:25               ` [PATCH 5/6 v4] NFSD: New helper nfs4_get_stateowner() for atomic_inc sop reference Kinglong Mee
2014-08-19 20:14                 ` Jeff Layton
2014-08-19 15:26               ` [PATCH 6/6 v4] NFSD: Increase the reference of lockowner when coping file_lock Kinglong Mee
2014-08-20  9:51                 ` [PATCH 1/6 v5] NFSD: Remove the duplicate initialize of file_lock Kinglong Mee
     [not found]                 ` <53F36CB5.2030707-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-08-19 20:23                   ` [PATCH 6/6 v4] NFSD: Increase the reference of lockowner when coping file_lock Jeff Layton
2014-08-19 20:23                     ` Jeff Layton
2014-08-19 20:24                     ` J. Bruce Fields
     [not found]                     ` <20140819162344.269953bd-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2014-08-20 10:02                       ` Kinglong Mee
2014-08-20 10:02                         ` Kinglong Mee
2014-08-20  9:53                   ` [PATCH 2/6 v5] locks: Rename __locks_copy_lock() to locks_copy_conflock() Kinglong Mee
2014-08-20  9:53                     ` Kinglong Mee
2014-08-20  9:54                   ` [PATCH 3/6 v5] locks: New ops in file_lock_operations for get/put owner Kinglong Mee
2014-08-20  9:54                     ` Kinglong Mee
2014-08-20  9:57                   ` [PATCH 5/6 v5] NFSD: New helper nfs4_get_stateowner() for atomic_inc sop reference Kinglong Mee
2014-08-20  9:57                     ` Kinglong Mee
2014-08-20  9:59                   ` [PATCH 6/6 v5] NFSD: Get reference of lockowner when coping file_lock Kinglong Mee
2014-08-20  9:59                     ` Kinglong Mee
2014-08-20  9:56                 ` [PATCH 4/6 v5] locks: Copy fl_lmops information for conflock in locks_copy_conflock() Kinglong Mee

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=20140708070320.1d5646f0@tlielax.poochiereds.net \
    --to=jeff.layton@primarydata.com \
    --cc=bfields@fieldses.org \
    --cc=kinglongmee@gmail.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.