All of lore.kernel.org
 help / color / mirror / Atom feed
From: "J. Bruce Fields" <bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
To: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org,
	matthew-Ztpu424NOJ8@public.gmane.org,
	dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	sage-4GqslpFJ+cxBDgjK7y7TUQ@public.gmane.org,
	smfrench-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	swhiteho-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	Trond.Myklebust-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org,
	akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-afs-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	ceph-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	samba-technical-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org,
	cluster-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	piastryyy-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
Subject: Re: [PATCH v1 03/11] locks: comment cleanups and clarifications
Date: Mon, 3 Jun 2013 18:00:24 -0400	[thread overview]
Message-ID: <20130603220024.GF2109@fieldses.org> (raw)
In-Reply-To: <1370056054-25449-4-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

On Fri, May 31, 2013 at 11:07:26PM -0400, Jeff Layton wrote:
> Signed-off-by: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> ---
>  fs/locks.c         |   24 +++++++++++++++++++-----
>  include/linux/fs.h |    6 ++++++
>  2 files changed, 25 insertions(+), 5 deletions(-)
> 
> diff --git a/fs/locks.c b/fs/locks.c
> index e3140b8..a7d2253 100644
> --- a/fs/locks.c
> +++ b/fs/locks.c
> @@ -150,6 +150,16 @@ static int target_leasetype(struct file_lock *fl)
>  int leases_enable = 1;
>  int lease_break_time = 45;
>  
> +/*
> + * The i_flock list is ordered by:
> + *
> + * 1) lock type -- FL_LEASEs first, then FL_FLOCK, and finally FL_POSIX
> + * 2) lock owner
> + * 3) lock range start
> + * 4) lock range end
> + *
> + * Obviously, the last two criteria only matter for POSIX locks.
> + */

Thanks, yes, that needs documenting!  Though I wonder if this is the
place people will look for it.

>  #define for_each_lock(inode, lockp) \
>  	for (lockp = &inode->i_flock; *lockp != NULL; lockp = &(*lockp)->fl_next)
>  
> @@ -806,6 +816,11 @@ static int __posix_lock_file(struct inode *inode, struct file_lock *request, str
>  	}
>  
>  	lock_flocks();
> +	/*
> +	 * New lock request. Walk all POSIX locks and look for conflicts. If
> +	 * there are any, either return -EAGAIN or put the request on the
> +	 * blocker's list of waiters.
> +	 */

This though, seems a) not 100% accurate (it could also return EDEADLCK,
for example), b) mostly redundant with respect to the following code.

>  	if (request->fl_type != F_UNLCK) {
>  		for_each_lock(inode, before) {
>  			fl = *before;
> @@ -844,7 +859,7 @@ static int __posix_lock_file(struct inode *inode, struct file_lock *request, str
>  		before = &fl->fl_next;
>  	}
>  
> -	/* Process locks with this owner.  */
> +	/* Process locks with this owner. */
>  	while ((fl = *before) && posix_same_owner(request, fl)) {
>  		/* Detect adjacent or overlapping regions (if same lock type)
>  		 */
> @@ -930,10 +945,9 @@ static int __posix_lock_file(struct inode *inode, struct file_lock *request, str
>  	}
>  
>  	/*
> -	 * The above code only modifies existing locks in case of
> -	 * merging or replacing.  If new lock(s) need to be inserted
> -	 * all modifications are done bellow this, so it's safe yet to
> -	 * bail out.
> +	 * The above code only modifies existing locks in case of merging or
> +	 * replacing. If new lock(s) need to be inserted all modifications are
> +	 * done below this, so it's safe yet to bail out.
>  	 */
>  	error = -ENOLCK; /* "no luck" */
>  	if (right && left == right && !new_fl2)
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index b9d7816..ae377e9 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -926,6 +926,12 @@ int locks_in_grace(struct net *);
>  /* that will die - we need it for nfs_lock_info */
>  #include <linux/nfs_fs_i.h>
>  
> +/*
> + * struct file_lock represents a generic "file lock". It's used to represent
> + * POSIX byte range locks, BSD (flock) locks, and leases. It's important to
> + * note that the same struct is used to represent both a request for a lock and
> + * the lock itself, but the same object is never used for both.

Yes, and I do find that confusing.  I wonder if there's a sensible way
to use separate structs for the different uses.

--b.

> + */
>  struct file_lock {
>  	struct file_lock *fl_next;	/* singly linked list for this inode  */
>  	struct list_head fl_link;	/* doubly linked list of all locks */
> -- 
> 1.7.1
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: J. Bruce Fields <bfields@fieldses.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH v1 03/11] locks: comment cleanups and clarifications
Date: Mon, 3 Jun 2013 18:00:24 -0400	[thread overview]
Message-ID: <20130603220024.GF2109@fieldses.org> (raw)
In-Reply-To: <1370056054-25449-4-git-send-email-jlayton@redhat.com>

On Fri, May 31, 2013 at 11:07:26PM -0400, Jeff Layton wrote:
> Signed-off-by: Jeff Layton <jlayton@redhat.com>
> ---
>  fs/locks.c         |   24 +++++++++++++++++++-----
>  include/linux/fs.h |    6 ++++++
>  2 files changed, 25 insertions(+), 5 deletions(-)
> 
> diff --git a/fs/locks.c b/fs/locks.c
> index e3140b8..a7d2253 100644
> --- a/fs/locks.c
> +++ b/fs/locks.c
> @@ -150,6 +150,16 @@ static int target_leasetype(struct file_lock *fl)
>  int leases_enable = 1;
>  int lease_break_time = 45;
>  
> +/*
> + * The i_flock list is ordered by:
> + *
> + * 1) lock type -- FL_LEASEs first, then FL_FLOCK, and finally FL_POSIX
> + * 2) lock owner
> + * 3) lock range start
> + * 4) lock range end
> + *
> + * Obviously, the last two criteria only matter for POSIX locks.
> + */

Thanks, yes, that needs documenting!  Though I wonder if this is the
place people will look for it.

>  #define for_each_lock(inode, lockp) \
>  	for (lockp = &inode->i_flock; *lockp != NULL; lockp = &(*lockp)->fl_next)
>  
> @@ -806,6 +816,11 @@ static int __posix_lock_file(struct inode *inode, struct file_lock *request, str
>  	}
>  
>  	lock_flocks();
> +	/*
> +	 * New lock request. Walk all POSIX locks and look for conflicts. If
> +	 * there are any, either return -EAGAIN or put the request on the
> +	 * blocker's list of waiters.
> +	 */

This though, seems a) not 100% accurate (it could also return EDEADLCK,
for example), b) mostly redundant with respect to the following code.

>  	if (request->fl_type != F_UNLCK) {
>  		for_each_lock(inode, before) {
>  			fl = *before;
> @@ -844,7 +859,7 @@ static int __posix_lock_file(struct inode *inode, struct file_lock *request, str
>  		before = &fl->fl_next;
>  	}
>  
> -	/* Process locks with this owner.  */
> +	/* Process locks with this owner. */
>  	while ((fl = *before) && posix_same_owner(request, fl)) {
>  		/* Detect adjacent or overlapping regions (if same lock type)
>  		 */
> @@ -930,10 +945,9 @@ static int __posix_lock_file(struct inode *inode, struct file_lock *request, str
>  	}
>  
>  	/*
> -	 * The above code only modifies existing locks in case of
> -	 * merging or replacing.  If new lock(s) need to be inserted
> -	 * all modifications are done bellow this, so it's safe yet to
> -	 * bail out.
> +	 * The above code only modifies existing locks in case of merging or
> +	 * replacing. If new lock(s) need to be inserted all modifications are
> +	 * done below this, so it's safe yet to bail out.
>  	 */
>  	error = -ENOLCK; /* "no luck" */
>  	if (right && left == right && !new_fl2)
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index b9d7816..ae377e9 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -926,6 +926,12 @@ int locks_in_grace(struct net *);
>  /* that will die - we need it for nfs_lock_info */
>  #include <linux/nfs_fs_i.h>
>  
> +/*
> + * struct file_lock represents a generic "file lock". It's used to represent
> + * POSIX byte range locks, BSD (flock) locks, and leases. It's important to
> + * note that the same struct is used to represent both a request for a lock and
> + * the lock itself, but the same object is never used for both.

Yes, and I do find that confusing.  I wonder if there's a sensible way
to use separate structs for the different uses.

--b.

> + */
>  struct file_lock {
>  	struct file_lock *fl_next;	/* singly linked list for this inode  */
>  	struct list_head fl_link;	/* doubly linked list of all locks */
> -- 
> 1.7.1
> 



WARNING: multiple messages have this Message-ID (diff)
From: "J. Bruce Fields" <bfields@fieldses.org>
To: Jeff Layton <jlayton@redhat.com>
Cc: viro@zeniv.linux.org.uk, matthew@wil.cx, dhowells@redhat.com,
	sage@inktank.com, smfrench@gmail.com, swhiteho@redhat.com,
	Trond.Myklebust@netapp.com, akpm@linux-foundation.org,
	linux-kernel@vger.kernel.org, linux-afs@lists.infradead.org,
	ceph-devel@vger.kernel.org, linux-cifs@vger.kernel.org,
	samba-technical@lists.samba.org, cluster-devel@redhat.com,
	linux-nfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	piastryyy@gmail.com
Subject: Re: [PATCH v1 03/11] locks: comment cleanups and clarifications
Date: Mon, 3 Jun 2013 18:00:24 -0400	[thread overview]
Message-ID: <20130603220024.GF2109@fieldses.org> (raw)
In-Reply-To: <1370056054-25449-4-git-send-email-jlayton@redhat.com>

On Fri, May 31, 2013 at 11:07:26PM -0400, Jeff Layton wrote:
> Signed-off-by: Jeff Layton <jlayton@redhat.com>
> ---
>  fs/locks.c         |   24 +++++++++++++++++++-----
>  include/linux/fs.h |    6 ++++++
>  2 files changed, 25 insertions(+), 5 deletions(-)
> 
> diff --git a/fs/locks.c b/fs/locks.c
> index e3140b8..a7d2253 100644
> --- a/fs/locks.c
> +++ b/fs/locks.c
> @@ -150,6 +150,16 @@ static int target_leasetype(struct file_lock *fl)
>  int leases_enable = 1;
>  int lease_break_time = 45;
>  
> +/*
> + * The i_flock list is ordered by:
> + *
> + * 1) lock type -- FL_LEASEs first, then FL_FLOCK, and finally FL_POSIX
> + * 2) lock owner
> + * 3) lock range start
> + * 4) lock range end
> + *
> + * Obviously, the last two criteria only matter for POSIX locks.
> + */

Thanks, yes, that needs documenting!  Though I wonder if this is the
place people will look for it.

>  #define for_each_lock(inode, lockp) \
>  	for (lockp = &inode->i_flock; *lockp != NULL; lockp = &(*lockp)->fl_next)
>  
> @@ -806,6 +816,11 @@ static int __posix_lock_file(struct inode *inode, struct file_lock *request, str
>  	}
>  
>  	lock_flocks();
> +	/*
> +	 * New lock request. Walk all POSIX locks and look for conflicts. If
> +	 * there are any, either return -EAGAIN or put the request on the
> +	 * blocker's list of waiters.
> +	 */

This though, seems a) not 100% accurate (it could also return EDEADLCK,
for example), b) mostly redundant with respect to the following code.

>  	if (request->fl_type != F_UNLCK) {
>  		for_each_lock(inode, before) {
>  			fl = *before;
> @@ -844,7 +859,7 @@ static int __posix_lock_file(struct inode *inode, struct file_lock *request, str
>  		before = &fl->fl_next;
>  	}
>  
> -	/* Process locks with this owner.  */
> +	/* Process locks with this owner. */
>  	while ((fl = *before) && posix_same_owner(request, fl)) {
>  		/* Detect adjacent or overlapping regions (if same lock type)
>  		 */
> @@ -930,10 +945,9 @@ static int __posix_lock_file(struct inode *inode, struct file_lock *request, str
>  	}
>  
>  	/*
> -	 * The above code only modifies existing locks in case of
> -	 * merging or replacing.  If new lock(s) need to be inserted
> -	 * all modifications are done bellow this, so it's safe yet to
> -	 * bail out.
> +	 * The above code only modifies existing locks in case of merging or
> +	 * replacing. If new lock(s) need to be inserted all modifications are
> +	 * done below this, so it's safe yet to bail out.
>  	 */
>  	error = -ENOLCK; /* "no luck" */
>  	if (right && left == right && !new_fl2)
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index b9d7816..ae377e9 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -926,6 +926,12 @@ int locks_in_grace(struct net *);
>  /* that will die - we need it for nfs_lock_info */
>  #include <linux/nfs_fs_i.h>
>  
> +/*
> + * struct file_lock represents a generic "file lock". It's used to represent
> + * POSIX byte range locks, BSD (flock) locks, and leases. It's important to
> + * note that the same struct is used to represent both a request for a lock and
> + * the lock itself, but the same object is never used for both.

Yes, and I do find that confusing.  I wonder if there's a sensible way
to use separate structs for the different uses.

--b.

> + */
>  struct file_lock {
>  	struct file_lock *fl_next;	/* singly linked list for this inode  */
>  	struct list_head fl_link;	/* doubly linked list of all locks */
> -- 
> 1.7.1
> 

  parent reply	other threads:[~2013-06-03 22:00 UTC|newest]

Thread overview: 103+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-01  3:07 [PATCH v1 00/11] locks: scalability improvements for file locking Jeff Layton
2013-06-01  3:07 ` Jeff Layton
2013-06-01  3:07 ` [Cluster-devel] " Jeff Layton
2013-06-01  3:07 ` [PATCH v1 01/11] cifs: use posix_unblock_lock instead of locks_delete_block Jeff Layton
2013-06-01  3:07   ` [Cluster-devel] " Jeff Layton
     [not found]   ` <1370056054-25449-2-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-06-03 21:53     ` J. Bruce Fields
2013-06-03 21:53       ` J. Bruce Fields
2013-06-03 21:53       ` [Cluster-devel] " J. Bruce Fields
2013-06-01  3:07 ` [PATCH v1 02/11] locks: make generic_add_lease and generic_delete_lease static Jeff Layton
2013-06-01  3:07   ` [Cluster-devel] " Jeff Layton
     [not found]   ` <1370056054-25449-3-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-06-03 21:53     ` J. Bruce Fields
2013-06-03 21:53       ` J. Bruce Fields
2013-06-03 21:53       ` [Cluster-devel] " J. Bruce Fields
2013-06-01  3:07 ` [PATCH v1 04/11] locks: make "added" in __posix_lock_file a bool Jeff Layton
2013-06-01  3:07   ` [Cluster-devel] " Jeff Layton
2013-06-04 20:17   ` J. Bruce Fields
2013-06-04 20:17     ` [Cluster-devel] " J. Bruce Fields
2013-06-01  3:07 ` [PATCH v1 05/11] locks: encapsulate the fl_link list handling Jeff Layton
2013-06-01  3:07   ` [Cluster-devel] " Jeff Layton
2013-06-04 20:17   ` J. Bruce Fields
2013-06-04 20:17     ` [Cluster-devel] " J. Bruce Fields
     [not found] ` <1370056054-25449-1-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-06-01  3:07   ` [PATCH v1 03/11] locks: comment cleanups and clarifications Jeff Layton
2013-06-01  3:07     ` Jeff Layton
2013-06-01  3:07     ` [Cluster-devel] " Jeff Layton
     [not found]     ` <1370056054-25449-4-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-06-03 22:00       ` J. Bruce Fields [this message]
2013-06-03 22:00         ` J. Bruce Fields
2013-06-03 22:00         ` [Cluster-devel] " J. Bruce Fields
     [not found]         ` <20130603220024.GF2109-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2013-06-04 11:09           ` Jeff Layton
2013-06-04 11:09             ` Jeff Layton
2013-06-04 11:09             ` [Cluster-devel] " Jeff Layton
2013-06-01  3:07   ` [PATCH v1 06/11] locks: convert to i_lock to protect i_flock list Jeff Layton
2013-06-01  3:07     ` Jeff Layton
2013-06-01  3:07     ` [Cluster-devel] " Jeff Layton
2013-06-04 21:22     ` J. Bruce Fields
2013-06-04 21:22       ` [Cluster-devel] " J. Bruce Fields
     [not found]       ` <20130604212208.GC15594-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2013-06-05  0:46         ` Jeff Layton
2013-06-05  0:46           ` Jeff Layton
2013-06-05  0:46           ` [Cluster-devel] " Jeff Layton
2013-06-01  3:07   ` [PATCH v1 09/11] locks: turn the blocked_list into a hashtable Jeff Layton
2013-06-01  3:07     ` Jeff Layton
2013-06-01  3:07     ` [Cluster-devel] " Jeff Layton
2013-06-01  3:07   ` [PATCH v1 10/11] locks: add a new "lm_owner_key" lock operation Jeff Layton
2013-06-01  3:07     ` Jeff Layton
2013-06-01  3:07     ` [Cluster-devel] " Jeff Layton
2013-06-01  3:07   ` [PATCH v1 11/11] locks: give the blocked_hash its own spinlock Jeff Layton
2013-06-01  3:07     ` Jeff Layton
2013-06-01  3:07     ` [Cluster-devel] " Jeff Layton
     [not found]     ` <1370056054-25449-12-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-06-04 14:19       ` Stefan (metze) Metzmacher
2013-06-04 14:19         ` Stefan (metze) Metzmacher
2013-06-04 14:19         ` [Cluster-devel] " Stefan Metzmacher
2013-06-04 14:39         ` Jeff Layton
2013-06-04 14:39           ` [Cluster-devel] " Jeff Layton
2013-06-04 14:46         ` Christoph Hellwig
2013-06-04 14:46           ` [Cluster-devel] " Christoph Hellwig
     [not found]           ` <20130604144640.GA7730-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2013-06-04 14:53             ` J. Bruce Fields
2013-06-04 14:53               ` J. Bruce Fields
2013-06-04 14:53               ` [Cluster-devel] " J. Bruce Fields
2013-06-04 15:15               ` Jeff Layton
2013-06-04 15:15                 ` [Cluster-devel] " Jeff Layton
2013-06-04 14:56             ` Jeff Layton
2013-06-04 14:56               ` Jeff Layton
2013-06-04 14:56               ` [Cluster-devel] " Jeff Layton
2013-06-03 19:04   ` [PATCH v1 00/11] locks: scalability improvements for file locking Davidlohr Bueso
2013-06-03 19:04     ` Davidlohr Bueso
2013-06-03 19:04     ` [Cluster-devel] " Davidlohr Bueso
2013-06-03 21:31   ` J. Bruce Fields
2013-06-03 21:31     ` J. Bruce Fields
2013-06-03 21:31     ` [Cluster-devel] " J. Bruce Fields
2013-06-04 10:54     ` Jeff Layton
2013-06-04 10:54       ` [Cluster-devel] " Jeff Layton
     [not found]       ` <20130604065417.46080a57-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2013-06-04 11:56         ` Jim Rees
2013-06-04 11:56           ` Jim Rees
2013-06-04 11:56           ` [Cluster-devel] " Jim Rees
     [not found]           ` <20130604115644.GA4180-63aXycvo3TyHXe+LvDLADg@public.gmane.org>
2013-06-04 12:15             ` Jeff Layton
2013-06-04 12:15               ` Jeff Layton
2013-06-04 12:15               ` [Cluster-devel] " Jeff Layton
2013-06-01  3:07 ` [PATCH v1 07/11] locks: only pull entries off of blocked_list when they are really unblocked Jeff Layton
2013-06-01  3:07   ` Jeff Layton
2013-06-01  3:07   ` [Cluster-devel] " Jeff Layton
     [not found]   ` <1370056054-25449-8-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-06-04 21:58     ` J. Bruce Fields
2013-06-04 21:58       ` J. Bruce Fields
2013-06-04 21:58       ` [Cluster-devel] " J. Bruce Fields
     [not found]       ` <20130604215839.GD15594-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2013-06-05 11:38         ` Jeff Layton
2013-06-05 11:38           ` Jeff Layton
2013-06-05 11:38           ` [Cluster-devel] " Jeff Layton
     [not found]           ` <20130605073822.4d67c57c-4QP7MXygkU+dMjc06nkz3ljfA9RmPOcC@public.gmane.org>
2013-06-05 12:24             ` J. Bruce Fields
2013-06-05 12:24               ` J. Bruce Fields
2013-06-05 12:24               ` [Cluster-devel] " J. Bruce Fields
2013-06-05 12:38               ` Jeff Layton
2013-06-05 12:38                 ` [Cluster-devel] " Jeff Layton
     [not found]                 ` <20130605083859.72c855cd-4QP7MXygkU+dMjc06nkz3ljfA9RmPOcC@public.gmane.org>
2013-06-05 12:59                   ` J. Bruce Fields
2013-06-05 12:59                     ` J. Bruce Fields
2013-06-05 12:59                     ` [Cluster-devel] " J. Bruce Fields
2013-06-01  3:07 ` [PATCH v1 08/11] locks: convert fl_link to a hlist_node Jeff Layton
2013-06-01  3:07   ` [Cluster-devel] " Jeff Layton
     [not found]   ` <1370056054-25449-9-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-06-04 21:59     ` J. Bruce Fields
2013-06-04 21:59       ` J. Bruce Fields
2013-06-04 21:59       ` [Cluster-devel] " J. Bruce Fields
2013-06-05 11:43       ` Jeff Layton
2013-06-05 11:43         ` [Cluster-devel] " Jeff Layton
     [not found]         ` <20130605074309.051ff75f-4QP7MXygkU+dMjc06nkz3ljfA9RmPOcC@public.gmane.org>
2013-06-05 12:46           ` J. Bruce Fields
2013-06-05 12:46             ` J. Bruce Fields
2013-06-05 12:46             ` [Cluster-devel] " 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=20130603220024.GF2109@fieldses.org \
    --to=bfields-uc3wqj2krung9huczpvpmw@public.gmane.org \
    --cc=Trond.Myklebust-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org \
    --cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    --cc=ceph-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=cluster-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=linux-afs-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=matthew-Ztpu424NOJ8@public.gmane.org \
    --cc=piastryyy-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=sage-4GqslpFJ+cxBDgjK7y7TUQ@public.gmane.org \
    --cc=samba-technical-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org \
    --cc=smfrench-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=swhiteho-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.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.