From: Benny Halevy <bhalevy@primarydata.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>,
linux-fsdevel@vger.kernel.org,
NFS list <linux-nfs@vger.kernel.org>,
Christoph Hellwig <hch@infradead.org>,
Andreas Gruenbacher <agruen@suse.de>
Subject: Re: [PATCH] posix_acl: resolve compile dependency in posix_acl.h
Date: Thu, 10 Oct 2013 11:49:43 +0300 [thread overview]
Message-ID: <52566A27.3080204@primarydata.com> (raw)
In-Reply-To: <20131009154109.13c7248c53b97d96194ca8f9@linux-foundation.org>
On 2013-10-10 01:41, Andrew Morton wrote:
> On Wed, 02 Oct 2013 17:36:29 +0300 Benny Halevy <bhalevy@primarydata.com> wrote:
>
>> From: Benny Halevy <bhalevy@panasas.com>
>>
>> get_cached_acl is defined as inline in posix_acl.h
>> requiring the full definition of struct inode as it
>> dereferences its struct inode * parameter.
>
> That's very old code so you must have a peculiar config. Please
> describe the circumstances under which this occurs, because I'd like to
> avoid merging this patch.
>
Wow, sorry, you're right. It originated in 2.6.33 as far as I can see
and it is no longer needed.
>> --- a/include/linux/posix_acl.h
>> +++ b/include/linux/posix_acl.h
>> @@ -9,6 +9,7 @@
>> #define __LINUX_POSIX_ACL_H
>>
>> #include <linux/bug.h>
>> +#include <linux/fs.h>
>> #include <linux/slab.h>
>> #include <linux/rcupdate.h>
>
> A better fix is to undo all that crazy inlining in posix_acl.h.
>
>
> From: Andrew Morton <akpm@linux-foundation.org>
> Subject: posix_acl: uninlining
>
> Uninline vast tracts of nested inline functions in
> include/linux/posix_acl.h.
>
> This reduces the text+data+bss size of x86_64 allyesconfig vmlinux by 8026
> bytes.
>
> Also fixes an obscure build error reported by Benny: get_cached_acl()
> needs fs.h for struct inode internals.
Sorry for the stale report, I have no problem with 3.12-rc3.
>
> The patch also regularises the positioning of the EXPORT_SYMBOLs in
> posix_acl.c.
>
> Reported-by:: Benny Halevy <bhalevy@panasas.com>
ditto.
> Cc: Alexander Viro <viro@zeniv.linux.org.uk>
> Cc: J. Bruce Fields <bfields@fieldses.org>
> Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
> Cc: Benny Halevy <bhalevy@primarydata.com>
> Cc: Andreas Gruenbacher <agruen@suse.de>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
FWIW, I tested my linux-pnfs 3.12-rc3 tree with this patch
and it builds and causes no regression with the connectathon test suite over pnfs.
Benny
> ---
>
> fs/posix_acl.c | 84 +++++++++++++++++++++++++++++++++---
> include/linux/posix_acl.h | 78 ++-------------------------------
> 2 files changed, 85 insertions(+), 77 deletions(-)
>
> diff -puN fs/posix_acl.c~posix_acl-uninlining fs/posix_acl.c
> --- a/fs/posix_acl.c~posix_acl-uninlining
> +++ a/fs/posix_acl.c
> @@ -22,11 +22,80 @@
>
> #include <linux/errno.h>
>
> -EXPORT_SYMBOL(posix_acl_init);
> -EXPORT_SYMBOL(posix_acl_alloc);
> -EXPORT_SYMBOL(posix_acl_valid);
> -EXPORT_SYMBOL(posix_acl_equiv_mode);
> -EXPORT_SYMBOL(posix_acl_from_mode);
> +struct posix_acl **acl_by_type(struct inode *inode, int type)
> +{
> + switch (type) {
> + case ACL_TYPE_ACCESS:
> + return &inode->i_acl;
> + case ACL_TYPE_DEFAULT:
> + return &inode->i_default_acl;
> + default:
> + BUG();
> + }
> +}
> +EXPORT_SYMBOL(acl_by_type);
> +
> +struct posix_acl *get_cached_acl(struct inode *inode, int type)
> +{
> + struct posix_acl **p = acl_by_type(inode, type);
> + struct posix_acl *acl = ACCESS_ONCE(*p);
> + if (acl) {
> + spin_lock(&inode->i_lock);
> + acl = *p;
> + if (acl != ACL_NOT_CACHED)
> + acl = posix_acl_dup(acl);
> + spin_unlock(&inode->i_lock);
> + }
> + return acl;
> +}
> +EXPORT_SYMBOL(get_cached_acl);
> +
> +struct posix_acl *get_cached_acl_rcu(struct inode *inode, int type)
> +{
> + return rcu_dereference(*acl_by_type(inode, type));
> +}
> +EXPORT_SYMBOL(get_cached_acl_rcu);
> +
> +void set_cached_acl(struct inode *inode, int type, struct posix_acl *acl)
> +{
> + struct posix_acl **p = acl_by_type(inode, type);
> + struct posix_acl *old;
> + spin_lock(&inode->i_lock);
> + old = *p;
> + rcu_assign_pointer(*p, posix_acl_dup(acl));
> + spin_unlock(&inode->i_lock);
> + if (old != ACL_NOT_CACHED)
> + posix_acl_release(old);
> +}
> +EXPORT_SYMBOL(set_cached_acl);
> +
> +void forget_cached_acl(struct inode *inode, int type)
> +{
> + struct posix_acl **p = acl_by_type(inode, type);
> + struct posix_acl *old;
> + spin_lock(&inode->i_lock);
> + old = *p;
> + *p = ACL_NOT_CACHED;
> + spin_unlock(&inode->i_lock);
> + if (old != ACL_NOT_CACHED)
> + posix_acl_release(old);
> +}
> +EXPORT_SYMBOL(forget_cached_acl);
> +
> +void forget_all_cached_acls(struct inode *inode)
> +{
> + struct posix_acl *old_access, *old_default;
> + spin_lock(&inode->i_lock);
> + old_access = inode->i_acl;
> + old_default = inode->i_default_acl;
> + inode->i_acl = inode->i_default_acl = ACL_NOT_CACHED;
> + spin_unlock(&inode->i_lock);
> + if (old_access != ACL_NOT_CACHED)
> + posix_acl_release(old_access);
> + if (old_default != ACL_NOT_CACHED)
> + posix_acl_release(old_default);
> +}
> +EXPORT_SYMBOL(forget_all_cached_acls);
>
> /*
> * Init a fresh posix_acl
> @@ -37,6 +106,7 @@ posix_acl_init(struct posix_acl *acl, in
> atomic_set(&acl->a_refcount, 1);
> acl->a_count = count;
> }
> +EXPORT_SYMBOL(posix_acl_init);
>
> /*
> * Allocate a new ACL with the specified number of entries.
> @@ -51,6 +121,7 @@ posix_acl_alloc(int count, gfp_t flags)
> posix_acl_init(acl, count);
> return acl;
> }
> +EXPORT_SYMBOL(posix_acl_alloc);
>
> /*
> * Clone an ACL.
> @@ -146,6 +217,7 @@ posix_acl_valid(const struct posix_acl *
> return 0;
> return -EINVAL;
> }
> +EXPORT_SYMBOL(posix_acl_valid);
>
> /*
> * Returns 0 if the acl can be exactly represented in the traditional
> @@ -186,6 +258,7 @@ posix_acl_equiv_mode(const struct posix_
> *mode_p = (*mode_p & ~S_IRWXUGO) | mode;
> return not_equiv;
> }
> +EXPORT_SYMBOL(posix_acl_equiv_mode);
>
> /*
> * Create an ACL representing the file mode permission bits of an inode.
> @@ -207,6 +280,7 @@ posix_acl_from_mode(umode_t mode, gfp_t
> acl->a_entries[2].e_perm = (mode & S_IRWXO);
> return acl;
> }
> +EXPORT_SYMBOL(posix_acl_from_mode);
>
> /*
> * Return 0 if current is granted want access to the inode
> diff -puN include/linux/posix_acl.h~posix_acl-uninlining include/linux/posix_acl.h
> --- a/include/linux/posix_acl.h~posix_acl-uninlining
> +++ a/include/linux/posix_acl.h
> @@ -94,78 +94,12 @@ extern int posix_acl_chmod(struct posix_
> extern struct posix_acl *get_posix_acl(struct inode *, int);
> extern int set_posix_acl(struct inode *, int, struct posix_acl *);
>
> -#ifdef CONFIG_FS_POSIX_ACL
> -static inline struct posix_acl **acl_by_type(struct inode *inode, int type)
> -{
> - switch (type) {
> - case ACL_TYPE_ACCESS:
> - return &inode->i_acl;
> - case ACL_TYPE_DEFAULT:
> - return &inode->i_default_acl;
> - default:
> - BUG();
> - }
> -}
> -
> -static inline struct posix_acl *get_cached_acl(struct inode *inode, int type)
> -{
> - struct posix_acl **p = acl_by_type(inode, type);
> - struct posix_acl *acl = ACCESS_ONCE(*p);
> - if (acl) {
> - spin_lock(&inode->i_lock);
> - acl = *p;
> - if (acl != ACL_NOT_CACHED)
> - acl = posix_acl_dup(acl);
> - spin_unlock(&inode->i_lock);
> - }
> - return acl;
> -}
> -
> -static inline struct posix_acl *get_cached_acl_rcu(struct inode *inode, int type)
> -{
> - return rcu_dereference(*acl_by_type(inode, type));
> -}
> -
> -static inline void set_cached_acl(struct inode *inode,
> - int type,
> - struct posix_acl *acl)
> -{
> - struct posix_acl **p = acl_by_type(inode, type);
> - struct posix_acl *old;
> - spin_lock(&inode->i_lock);
> - old = *p;
> - rcu_assign_pointer(*p, posix_acl_dup(acl));
> - spin_unlock(&inode->i_lock);
> - if (old != ACL_NOT_CACHED)
> - posix_acl_release(old);
> -}
> -
> -static inline void forget_cached_acl(struct inode *inode, int type)
> -{
> - struct posix_acl **p = acl_by_type(inode, type);
> - struct posix_acl *old;
> - spin_lock(&inode->i_lock);
> - old = *p;
> - *p = ACL_NOT_CACHED;
> - spin_unlock(&inode->i_lock);
> - if (old != ACL_NOT_CACHED)
> - posix_acl_release(old);
> -}
> -
> -static inline void forget_all_cached_acls(struct inode *inode)
> -{
> - struct posix_acl *old_access, *old_default;
> - spin_lock(&inode->i_lock);
> - old_access = inode->i_acl;
> - old_default = inode->i_default_acl;
> - inode->i_acl = inode->i_default_acl = ACL_NOT_CACHED;
> - spin_unlock(&inode->i_lock);
> - if (old_access != ACL_NOT_CACHED)
> - posix_acl_release(old_access);
> - if (old_default != ACL_NOT_CACHED)
> - posix_acl_release(old_default);
> -}
> -#endif
> +struct posix_acl **acl_by_type(struct inode *inode, int type);
> +struct posix_acl *get_cached_acl(struct inode *inode, int type);
> +struct posix_acl *get_cached_acl_rcu(struct inode *inode, int type);
> +void set_cached_acl(struct inode *inode, int type, struct posix_acl *acl);
> +void forget_cached_acl(struct inode *inode, int type);
> +void forget_all_cached_acls(struct inode *inode);
>
> static inline void cache_no_acl(struct inode *inode)
> {
> _
>
WARNING: multiple messages have this Message-ID (diff)
From: Benny Halevy <bhalevy-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>
To: Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
Cc: Alexander Viro
<viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org>,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
NFS list <linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Christoph Hellwig <hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
Andreas Gruenbacher <agruen-l3A5Bk7waGM@public.gmane.org>
Subject: Re: [PATCH] posix_acl: resolve compile dependency in posix_acl.h
Date: Thu, 10 Oct 2013 11:49:43 +0300 [thread overview]
Message-ID: <52566A27.3080204@primarydata.com> (raw)
In-Reply-To: <20131009154109.13c7248c53b97d96194ca8f9-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
On 2013-10-10 01:41, Andrew Morton wrote:
> On Wed, 02 Oct 2013 17:36:29 +0300 Benny Halevy <bhalevy-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org> wrote:
>
>> From: Benny Halevy <bhalevy-C4P08NqkoRlBDgjK7y7TUQ@public.gmane.org>
>>
>> get_cached_acl is defined as inline in posix_acl.h
>> requiring the full definition of struct inode as it
>> dereferences its struct inode * parameter.
>
> That's very old code so you must have a peculiar config. Please
> describe the circumstances under which this occurs, because I'd like to
> avoid merging this patch.
>
Wow, sorry, you're right. It originated in 2.6.33 as far as I can see
and it is no longer needed.
>> --- a/include/linux/posix_acl.h
>> +++ b/include/linux/posix_acl.h
>> @@ -9,6 +9,7 @@
>> #define __LINUX_POSIX_ACL_H
>>
>> #include <linux/bug.h>
>> +#include <linux/fs.h>
>> #include <linux/slab.h>
>> #include <linux/rcupdate.h>
>
> A better fix is to undo all that crazy inlining in posix_acl.h.
>
>
> From: Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
> Subject: posix_acl: uninlining
>
> Uninline vast tracts of nested inline functions in
> include/linux/posix_acl.h.
>
> This reduces the text+data+bss size of x86_64 allyesconfig vmlinux by 8026
> bytes.
>
> Also fixes an obscure build error reported by Benny: get_cached_acl()
> needs fs.h for struct inode internals.
Sorry for the stale report, I have no problem with 3.12-rc3.
>
> The patch also regularises the positioning of the EXPORT_SYMBOLs in
> posix_acl.c.
>
> Reported-by:: Benny Halevy <bhalevy-C4P08NqkoRlBDgjK7y7TUQ@public.gmane.org>
ditto.
> Cc: Alexander Viro <viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org>
> Cc: J. Bruce Fields <bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
> Cc: Trond Myklebust <Trond.Myklebust-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org>
> Cc: Benny Halevy <bhalevy-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>
> Cc: Andreas Gruenbacher <agruen-l3A5Bk7waGM@public.gmane.org>
> Signed-off-by: Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
FWIW, I tested my linux-pnfs 3.12-rc3 tree with this patch
and it builds and causes no regression with the connectathon test suite over pnfs.
Benny
> ---
>
> fs/posix_acl.c | 84 +++++++++++++++++++++++++++++++++---
> include/linux/posix_acl.h | 78 ++-------------------------------
> 2 files changed, 85 insertions(+), 77 deletions(-)
>
> diff -puN fs/posix_acl.c~posix_acl-uninlining fs/posix_acl.c
> --- a/fs/posix_acl.c~posix_acl-uninlining
> +++ a/fs/posix_acl.c
> @@ -22,11 +22,80 @@
>
> #include <linux/errno.h>
>
> -EXPORT_SYMBOL(posix_acl_init);
> -EXPORT_SYMBOL(posix_acl_alloc);
> -EXPORT_SYMBOL(posix_acl_valid);
> -EXPORT_SYMBOL(posix_acl_equiv_mode);
> -EXPORT_SYMBOL(posix_acl_from_mode);
> +struct posix_acl **acl_by_type(struct inode *inode, int type)
> +{
> + switch (type) {
> + case ACL_TYPE_ACCESS:
> + return &inode->i_acl;
> + case ACL_TYPE_DEFAULT:
> + return &inode->i_default_acl;
> + default:
> + BUG();
> + }
> +}
> +EXPORT_SYMBOL(acl_by_type);
> +
> +struct posix_acl *get_cached_acl(struct inode *inode, int type)
> +{
> + struct posix_acl **p = acl_by_type(inode, type);
> + struct posix_acl *acl = ACCESS_ONCE(*p);
> + if (acl) {
> + spin_lock(&inode->i_lock);
> + acl = *p;
> + if (acl != ACL_NOT_CACHED)
> + acl = posix_acl_dup(acl);
> + spin_unlock(&inode->i_lock);
> + }
> + return acl;
> +}
> +EXPORT_SYMBOL(get_cached_acl);
> +
> +struct posix_acl *get_cached_acl_rcu(struct inode *inode, int type)
> +{
> + return rcu_dereference(*acl_by_type(inode, type));
> +}
> +EXPORT_SYMBOL(get_cached_acl_rcu);
> +
> +void set_cached_acl(struct inode *inode, int type, struct posix_acl *acl)
> +{
> + struct posix_acl **p = acl_by_type(inode, type);
> + struct posix_acl *old;
> + spin_lock(&inode->i_lock);
> + old = *p;
> + rcu_assign_pointer(*p, posix_acl_dup(acl));
> + spin_unlock(&inode->i_lock);
> + if (old != ACL_NOT_CACHED)
> + posix_acl_release(old);
> +}
> +EXPORT_SYMBOL(set_cached_acl);
> +
> +void forget_cached_acl(struct inode *inode, int type)
> +{
> + struct posix_acl **p = acl_by_type(inode, type);
> + struct posix_acl *old;
> + spin_lock(&inode->i_lock);
> + old = *p;
> + *p = ACL_NOT_CACHED;
> + spin_unlock(&inode->i_lock);
> + if (old != ACL_NOT_CACHED)
> + posix_acl_release(old);
> +}
> +EXPORT_SYMBOL(forget_cached_acl);
> +
> +void forget_all_cached_acls(struct inode *inode)
> +{
> + struct posix_acl *old_access, *old_default;
> + spin_lock(&inode->i_lock);
> + old_access = inode->i_acl;
> + old_default = inode->i_default_acl;
> + inode->i_acl = inode->i_default_acl = ACL_NOT_CACHED;
> + spin_unlock(&inode->i_lock);
> + if (old_access != ACL_NOT_CACHED)
> + posix_acl_release(old_access);
> + if (old_default != ACL_NOT_CACHED)
> + posix_acl_release(old_default);
> +}
> +EXPORT_SYMBOL(forget_all_cached_acls);
>
> /*
> * Init a fresh posix_acl
> @@ -37,6 +106,7 @@ posix_acl_init(struct posix_acl *acl, in
> atomic_set(&acl->a_refcount, 1);
> acl->a_count = count;
> }
> +EXPORT_SYMBOL(posix_acl_init);
>
> /*
> * Allocate a new ACL with the specified number of entries.
> @@ -51,6 +121,7 @@ posix_acl_alloc(int count, gfp_t flags)
> posix_acl_init(acl, count);
> return acl;
> }
> +EXPORT_SYMBOL(posix_acl_alloc);
>
> /*
> * Clone an ACL.
> @@ -146,6 +217,7 @@ posix_acl_valid(const struct posix_acl *
> return 0;
> return -EINVAL;
> }
> +EXPORT_SYMBOL(posix_acl_valid);
>
> /*
> * Returns 0 if the acl can be exactly represented in the traditional
> @@ -186,6 +258,7 @@ posix_acl_equiv_mode(const struct posix_
> *mode_p = (*mode_p & ~S_IRWXUGO) | mode;
> return not_equiv;
> }
> +EXPORT_SYMBOL(posix_acl_equiv_mode);
>
> /*
> * Create an ACL representing the file mode permission bits of an inode.
> @@ -207,6 +280,7 @@ posix_acl_from_mode(umode_t mode, gfp_t
> acl->a_entries[2].e_perm = (mode & S_IRWXO);
> return acl;
> }
> +EXPORT_SYMBOL(posix_acl_from_mode);
>
> /*
> * Return 0 if current is granted want access to the inode
> diff -puN include/linux/posix_acl.h~posix_acl-uninlining include/linux/posix_acl.h
> --- a/include/linux/posix_acl.h~posix_acl-uninlining
> +++ a/include/linux/posix_acl.h
> @@ -94,78 +94,12 @@ extern int posix_acl_chmod(struct posix_
> extern struct posix_acl *get_posix_acl(struct inode *, int);
> extern int set_posix_acl(struct inode *, int, struct posix_acl *);
>
> -#ifdef CONFIG_FS_POSIX_ACL
> -static inline struct posix_acl **acl_by_type(struct inode *inode, int type)
> -{
> - switch (type) {
> - case ACL_TYPE_ACCESS:
> - return &inode->i_acl;
> - case ACL_TYPE_DEFAULT:
> - return &inode->i_default_acl;
> - default:
> - BUG();
> - }
> -}
> -
> -static inline struct posix_acl *get_cached_acl(struct inode *inode, int type)
> -{
> - struct posix_acl **p = acl_by_type(inode, type);
> - struct posix_acl *acl = ACCESS_ONCE(*p);
> - if (acl) {
> - spin_lock(&inode->i_lock);
> - acl = *p;
> - if (acl != ACL_NOT_CACHED)
> - acl = posix_acl_dup(acl);
> - spin_unlock(&inode->i_lock);
> - }
> - return acl;
> -}
> -
> -static inline struct posix_acl *get_cached_acl_rcu(struct inode *inode, int type)
> -{
> - return rcu_dereference(*acl_by_type(inode, type));
> -}
> -
> -static inline void set_cached_acl(struct inode *inode,
> - int type,
> - struct posix_acl *acl)
> -{
> - struct posix_acl **p = acl_by_type(inode, type);
> - struct posix_acl *old;
> - spin_lock(&inode->i_lock);
> - old = *p;
> - rcu_assign_pointer(*p, posix_acl_dup(acl));
> - spin_unlock(&inode->i_lock);
> - if (old != ACL_NOT_CACHED)
> - posix_acl_release(old);
> -}
> -
> -static inline void forget_cached_acl(struct inode *inode, int type)
> -{
> - struct posix_acl **p = acl_by_type(inode, type);
> - struct posix_acl *old;
> - spin_lock(&inode->i_lock);
> - old = *p;
> - *p = ACL_NOT_CACHED;
> - spin_unlock(&inode->i_lock);
> - if (old != ACL_NOT_CACHED)
> - posix_acl_release(old);
> -}
> -
> -static inline void forget_all_cached_acls(struct inode *inode)
> -{
> - struct posix_acl *old_access, *old_default;
> - spin_lock(&inode->i_lock);
> - old_access = inode->i_acl;
> - old_default = inode->i_default_acl;
> - inode->i_acl = inode->i_default_acl = ACL_NOT_CACHED;
> - spin_unlock(&inode->i_lock);
> - if (old_access != ACL_NOT_CACHED)
> - posix_acl_release(old_access);
> - if (old_default != ACL_NOT_CACHED)
> - posix_acl_release(old_default);
> -}
> -#endif
> +struct posix_acl **acl_by_type(struct inode *inode, int type);
> +struct posix_acl *get_cached_acl(struct inode *inode, int type);
> +struct posix_acl *get_cached_acl_rcu(struct inode *inode, int type);
> +void set_cached_acl(struct inode *inode, int type, struct posix_acl *acl);
> +void forget_cached_acl(struct inode *inode, int type);
> +void forget_all_cached_acls(struct inode *inode);
>
> static inline void cache_no_acl(struct inode *inode)
> {
> _
>
--
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
next prev parent reply other threads:[~2013-10-10 8:49 UTC|newest]
Thread overview: 141+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-26 18:36 [PATCH RFC v0 0/49] pnfsd-dlm Benny Halevy
2013-09-26 18:39 ` [PATCH RFC v0 01/49] pnfsd: Define CONFIG_PNFSD Benny Halevy
2013-09-26 18:39 ` [PATCH RFC v0 02/49] pnfsd: define NFSDDBG_PNFS Benny Halevy
2013-09-26 18:40 ` [PATCH RFC v0 03/49] pnfsd: return pnfs flags on exchange_id Benny Halevy
2013-09-26 21:55 ` J. Bruce Fields
2013-09-27 1:09 ` Benny Halevy
2013-09-26 18:40 ` [PATCH RFC v0 04/49] pnfsd: don't set up back channel on create_session for ds Benny Halevy
2013-09-26 22:01 ` J. Bruce Fields
2013-09-27 1:20 ` Benny Halevy
2013-09-26 18:40 ` [PATCH RFC v0 05/49] pnfsd: introduce pnfsd header files Benny Halevy
2013-09-29 11:43 ` Christoph Hellwig
2013-09-29 12:12 ` Benny Halevy
2013-09-29 12:13 ` Christoph Hellwig
2013-09-29 12:20 ` Benny Halevy
2013-09-29 12:21 ` Christoph Hellwig
2013-09-29 12:35 ` Christoph Hellwig
2013-09-30 15:23 ` Benny Halevy
2013-10-01 13:19 ` Christoph Hellwig
2013-10-01 1:05 ` Boaz Harrosh
2013-10-01 13:33 ` Christoph Hellwig
2013-10-02 11:35 ` Benny Halevy
2013-10-02 16:06 ` Christoph Hellwig
2013-10-01 20:30 ` J. Bruce Fields
2013-10-02 11:36 ` Benny Halevy
2013-10-02 16:07 ` Christoph Hellwig
2013-10-03 6:02 ` Benny Halevy
2013-10-03 9:55 ` Christoph Hellwig
2013-10-03 12:29 ` Benny Halevy
2013-10-03 12:37 ` Christoph Hellwig
2013-10-03 13:12 ` Ric Wheeler
2013-10-03 13:17 ` Christoph Hellwig
2013-10-03 13:18 ` Ric Wheeler
2013-10-03 14:19 ` Benny Halevy
2013-10-03 14:21 ` Christoph Hellwig
2013-10-03 14:24 ` Ric Wheeler
2013-10-03 14:38 ` Benny Halevy
2013-10-01 1:41 ` Boaz Harrosh
2013-10-01 19:43 ` J. Bruce Fields
2013-09-26 18:40 ` [PATCH RFC v0 06/49] pnfsd: define pnfs_export_operations Benny Halevy
2013-09-27 14:39 ` J. Bruce Fields
2013-09-29 10:53 ` Benny Halevy
2013-09-29 12:14 ` Christoph Hellwig
2013-09-26 18:40 ` [PATCH RFC v0 07/49] pnfsd: add pnfs export option Benny Halevy
2013-09-27 14:36 ` J. Bruce Fields
2013-09-29 10:51 ` Benny Halevy
2013-09-26 18:40 ` [PATCH RFC v0 08/49] pnfsd: layout verify Benny Halevy
2013-09-27 14:44 ` J. Bruce Fields
2013-09-29 11:16 ` Benny Halevy
2013-10-01 20:38 ` J. Bruce Fields
2013-10-02 11:42 ` Benny Halevy
2013-10-01 22:12 ` J. Bruce Fields
2013-09-26 18:40 ` [PATCH RFC v0 09/49] pnfsd: initial stub Benny Halevy
2013-09-26 18:40 ` [PATCH RFC v0 10/49] pnfsd: use sbid hash table to map super_blocks to devid major identifiers Benny Halevy
2013-10-01 22:14 ` J. Bruce Fields
2013-10-02 14:32 ` Benny Halevy
2013-10-02 15:24 ` J. Bruce Fields
2013-10-11 19:56 ` Christoph Hellwig
2013-10-13 6:11 ` Benny Halevy
2013-10-13 11:08 ` Christoph Hellwig
2013-10-13 12:44 ` Benny Halevy
2013-10-14 14:15 ` Christoph Hellwig
2013-09-26 18:40 ` [PATCH RFC v0 11/49] NFSD: introduce exp_xdr.h Benny Halevy
2013-09-29 12:15 ` Christoph Hellwig
2013-09-30 15:25 ` Benny Halevy
2013-09-26 18:40 ` [PATCH RFC v0 12/49] pnfsd: get device list/info Benny Halevy
2013-09-26 18:40 ` [PATCH RFC v0 13/49] pnfsd: filelayout: " Benny Halevy
2013-09-26 18:40 ` [PATCH RFC v0 14/49] pnfsd: provide helper for xdr encoding of deviceid Benny Halevy
2013-09-26 18:40 ` [PATCH RFC v0 15/49] pnfsd: add helper functions for identifying DS filehandles Benny Halevy
2013-09-26 18:40 ` [PATCH RFC v0 16/49] pnfsd: accept all ds stateids Benny Halevy
2013-09-26 18:41 ` [PATCH RFC v0 17/49] DEBUG: nfsd: more client_lock asserts Benny Halevy
2013-09-26 18:41 ` [PATCH RFC v0 18/49] pnfsd: nfs4_assert_state_locked Benny Halevy
2013-09-26 18:41 ` [PATCH RFC v0 19/49] pnfsd: layout get Benny Halevy
2013-09-26 18:41 ` [PATCH RFC v0 20/49] pnfsd: filelayout: layout encoding Benny Halevy
2013-09-29 12:16 ` Christoph Hellwig
2013-10-01 1:15 ` Boaz Harrosh
2013-10-01 13:34 ` Christoph Hellwig
2013-10-01 6:04 ` Benny Halevy
2013-10-02 14:27 ` Benny Halevy
2013-10-02 16:09 ` Christoph Hellwig
2013-09-26 18:41 ` [PATCH RFC v0 21/49] nfsd: no need to unhash_stid before free Benny Halevy
2013-10-11 19:37 ` Christoph Hellwig
2013-10-13 6:23 ` Benny Halevy
2013-10-13 19:28 ` J. Bruce Fields
2013-09-26 18:41 ` [PATCH RFC v0 22/49] nfsd: cleanup free_stid Benny Halevy
2013-09-26 18:41 ` [PATCH RFC v0 23/49] pnfsd: layout state allocation Benny Halevy
2013-09-26 18:41 ` [PATCH RFC v0 24/49] pnfsd: process the layout stateid Benny Halevy
2013-09-26 18:41 ` [PATCH RFC v0 25/49] pnfsd: layout state per client tracking Benny Halevy
2013-09-26 18:41 ` [PATCH RFC v0 26/49] pnfsd: layout state per file tracking Benny Halevy
2013-09-26 18:41 ` [PATCH RFC v0 27/49] pnfsd: hash layouts on layout state Benny Halevy
2013-09-26 18:41 ` [PATCH RFC v0 28/49] pnfsd: support layout segment merging Benny Halevy
2013-09-26 18:41 ` [PATCH RFC v0 29/49] pnfsd: support layout_type attribute Benny Halevy
2013-09-29 12:17 ` Christoph Hellwig
2013-10-01 1:21 ` Boaz Harrosh
2013-10-01 8:32 ` Benny Halevy
2013-09-26 18:41 ` [PATCH RFC v0 30/49] pnfsd: make pnfs server return layout_blksize when the client asks for it Benny Halevy
2013-09-26 18:41 ` [PATCH RFC v0 31/49] pnfsd: add support for per-file layout_types attribute Benny Halevy
2013-09-26 18:42 ` [PATCH RFC v0 32/49] pnfsd: per block device dlm data server list cache Benny Halevy
2013-09-26 18:42 ` [PATCH RFC v0 33/49] pnfsd: Add IP address validation to nfsd4_set_pnfs_dlm_device() Benny Halevy
2013-09-26 18:42 ` [PATCH RFC v0 34/49] pnfsd: new nfsd filesystem file: pnfs_dlm_device Benny Halevy
2013-09-26 18:42 ` [PATCH RFC v0 35/49] pnfsd: nfsd4_pnfs_dlm_getdeviter Benny Halevy
2013-09-26 18:42 ` [PATCH RFC v0 36/49] pnfsd: nfsd4_pnfs_dlm_getdevinfo Benny Halevy
2013-09-26 18:42 ` [PATCH RFC v0 37/49] pnfsd: make /proc/fs/nfsd/pnfs_dlm_device report dlm device list Benny Halevy
2013-09-26 18:42 ` [PATCH RFC v0 38/49] pnfsd: nfsd4_pnfs_dlm_layoutget Benny Halevy
2013-09-26 18:42 ` [PATCH RFC v0 39/49] pnfsd: DLM file layout only support read iomode layouts Benny Halevy
2013-09-26 18:42 ` [PATCH RFC v0 40/49] pnfsd: add dlm file layout layout-type Benny Halevy
2013-09-26 18:42 ` [PATCH RFC v0 41/49] pnfsd: dlm pnfs_export_operations Benny Halevy
2013-09-26 18:42 ` [PATCH RFC v0 42/49] pnfsd: gfs2: use generic file layout pnfs operations vector Benny Halevy
2013-09-26 18:42 ` [PATCH RFC v0 43/49] pnfsd: release state lock around iput in put_nfs4_file Benny Halevy
2013-09-29 12:19 ` Christoph Hellwig
2013-10-01 13:31 ` Benny Halevy
2013-10-01 13:37 ` Christoph Hellwig
2013-10-02 14:17 ` Benny Halevy
2013-10-02 15:26 ` J. Bruce Fields
2013-10-11 19:47 ` Christoph Hellwig
2013-10-13 6:26 ` Benny Halevy
2013-09-26 18:42 ` [PATCH RFC v0 44/49] posix_acl: resolve compile dependency in posix_acl.h Benny Halevy
2013-09-29 12:19 ` Christoph Hellwig
2013-10-02 14:17 ` Benny Halevy
2013-10-02 14:36 ` [PATCH] " Benny Halevy
2013-10-02 14:36 ` Benny Halevy
2013-10-09 22:41 ` Andrew Morton
2013-10-10 8:49 ` Benny Halevy [this message]
2013-10-10 8:49 ` Benny Halevy
2013-09-26 18:42 ` [PATCH RFC v0 45/49] nfs: resolve compile dependency in nfs_xdr.h Benny Halevy
2013-09-29 12:19 ` Christoph Hellwig
2013-10-02 14:19 ` Benny Halevy
2013-09-26 18:43 ` [PATCH RFC v0 46/49] pnfsd: layout return generic implementation Benny Halevy
2013-09-26 18:43 ` [PATCH RFC v0 47/49] pnfsd: pnfs_expire_client Benny Halevy
2013-09-26 18:43 ` [PATCH RFC v0 48/49] pnfsd: return on close Benny Halevy
2013-09-26 18:43 ` [PATCH RFC v0 49/49] pnfsd: dlm set return_on_close to true Benny Halevy
2013-09-26 19:44 ` [PATCH RFC v0 0/49] pnfsd-dlm J. Bruce Fields
2013-09-26 20:06 ` Benny Halevy
2013-09-27 13:31 ` Boaz Harrosh
2013-09-27 13:34 ` Benny Halevy
2013-09-27 16:37 ` Boaz Harrosh
2013-09-27 20:19 ` Benny Halevy
2013-10-01 0:23 ` Boaz Harrosh
2013-10-01 0:29 ` Boaz Harrosh
2013-10-02 6:02 ` Benny Halevy
2013-09-29 11:42 ` Christoph Hellwig
2013-09-29 11:54 ` Benny Halevy
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=52566A27.3080204@primarydata.com \
--to=bhalevy@primarydata.com \
--cc=agruen@suse.de \
--cc=akpm@linux-foundation.org \
--cc=hch@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/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.