From: Benny Halevy <bhalevy@panasas.com>
To: "J. Bruce Fields" <bfields@citi.umich.edu>
Cc: linux-fsdevel <linux-fsdevel@vger.kernel.org>,
NFS list <linux-nfs@vger.kernel.org>,
pNFS Mailing List <pnfs@linux-nfs.org>
Subject: Re: [pnfs] [PATCH v2 0/35] Initial pnfsd file layout support
Date: Mon, 07 Dec 2009 11:54:53 +0200 [thread overview]
Message-ID: <4B1CD0ED.9020305@panasas.com> (raw)
In-Reply-To: <4B1CCA52.8020900@panasas.com>
The patchset is also available here:
git://linux-nfs.org/~bhalevy/linux-pnfs.git pnfsd-files-next
Benny
On Dec. 07, 2009, 11:26 +0200, Benny Halevy <bhalevy@panasas.com> wrote:
> Bruce,
>
> The following patches implement initial pnfsd server support for
> the files layout and the dlm-based file systems, including GETDEVICELIST,
> GETDEVICEINFO, and LAYOUTGET.
> LAYOUTCOMMIT and LAYOUTRETURN generic implementation provides the
> complete implementation that was tested by Andy in the Austin Fall
> 2010 Bakeathon.
>
> The patchset is based onto your nfsd-next branch at
> d1ecbbf Merge branch 'for-2.6.33-incoming' into HEAD
> post Boaz' headers cleanup patchset.
>
> v2 includes the fixes posted here:
> http://linux-nfs.org/pipermail/pnfs/2009-December/009607.html
> as well as some cosmetic cleanups and cleanup of CONFIG_PNFSD usage
> on the lines Christoph suggested aimed at minimizing its use
> See diff -w at the bottom of this email for details
>
> [PATCH v2 01/35] pnfsd: Define CONFIG_PNFSD
> [PATCH v2 02/35] pnfsd: define NFSDDBG_PNFS
> [PATCH v2 03/35] pnfsd, pnfs: protocol level pnfs constants
> [PATCH v2 04/35] pnfsd: return pnfs flags on exchange_id
> [PATCH v2 05/35] pnfsd: don't set up back channel on create_session for ds
> [PATCH v2 06/35] pnfsd: introduce pnfsd header files
> [PATCH v2 07/35] pnfsd: define pnfs_export_operations
> [PATCH v2 08/35] pnfsd: add pnfs export option
> [PATCH v2 09/35] pnfsd: layout verify
> [PATCH v2 10/35] pnfsd: introduce exp_xdr.h
> [PATCH v2 11/35] pnfsd: get device list/info
> [PATCH v2 12/35] pnfsd: filelayout: get device list/info
> [PATCH v2 13/35] pnfsd: layout get
> [PATCH v2 14/35] pnfsd: filelayout: layout encoding
> [PATCH v2 15/35] pnfsd: Helper functions for layout stateid processing.
> [PATCH v2 16/35] pnfsd: helper function for stateid checking
> [PATCH v2 17/35] pnfsd: process the layout stateid
> [PATCH v2 18/35] pnfsd: add helper functions for identifying DS stateids.
> [PATCH v2 19/35] pnfsd: accept all ds stateids
> [PATCH v2 20/35] pnfsd: LAYOUTGET layout stateid processing
> [PATCH v2 21/35] pnfsd: destroy layout on expire_client
> [PATCH v2 22/35] pnfsd: support layout_type attribute
> [PATCH v2 23/35] pnfsd: per block device dlm data server list cache
> [PATCH v2 24/35] pnfsd: new nfsd filesystem file: pnfs_dlm_device
> [PATCH v2 25/35] pnfsd: nfsd4_pnfs_dlm_getdeviter
> [PATCH v2 26/35] pnfsd: nfsd4_pnfs_dlm_getdevinfo
> [PATCH v2 27/35] pnfsd: nfsd4_pnfs_dlm_layoutget
> [PATCH v2 28/35] pnfsd: add dlm file layout layout-type
> [PATCH v2 29/35] pnfsd: dlm pnfs_export_operations
> [PATCH v2 30/35] pnfsd: gfs2: use generic file layout pnfs operations vector
> [PATCH v2 31/35] posix_acl: resolve compile dependency in posix_acl.h
> [PATCH v2 32/35] nfs: resolve compile dependency in nfs_xdr.h
> [PATCH v2 33/35] pnfsd: layout commit
> [PATCH v2 34/35] pnfsd: layout return
> [PATCH v2 35/35] pnfsd: layoutreturn stateid processing
>
> diff from v1 + posted fixes:
>
> git diff --stat -p -M -w origin/pnfsd-files pnfsd-files
> fs/exportfs/Makefile | 4 ++--
> fs/exportfs/nfs4filelayoutxdr.c | 6 ------
> fs/gfs2/export.c | 1 +
> fs/nfsd/nfs4pnfsd.c | 17 +----------------
> fs/nfsd/nfs4pnfsdlm.c | 4 ++--
> fs/nfsd/nfs4state.c | 17 +++++++++++++----
> fs/nfsd/nfsfh.c | 6 +-----
> fs/nfsd/pnfsd.h | 4 ----
> include/linux/nfs4.h | 2 --
> include/linux/nfsd/nfsd.h | 8 --------
> include/linux/nfsd/nfsd4_pnfs.h | 11 +++++++++++
> include/linux/nfsd/state.h | 2 +-
> include/linux/nfsd/xdr4.h | 8 --------
> 13 files changed, 32 insertions(+), 58 deletions(-)
>
> diff --git a/fs/exportfs/Makefile b/fs/exportfs/Makefile
> index f820d80..658207d 100644
> --- a/fs/exportfs/Makefile
> +++ b/fs/exportfs/Makefile
> @@ -3,5 +3,5 @@
>
> obj-$(CONFIG_EXPORTFS) += exportfs.o
>
> -exportfs-objs := expfs.o
> -exportfs-objs += nfs4filelayoutxdr.o
> +exportfs-y := expfs.o
> +exportfs-$(CONFIG_EXPORTFS_FILE_LAYOUT) += nfs4filelayoutxdr.o
> diff --git a/fs/exportfs/nfs4filelayoutxdr.c b/fs/exportfs/nfs4filelayoutxdr.c
> index f076908..782b673 100644
> --- a/fs/exportfs/nfs4filelayoutxdr.c
> +++ b/fs/exportfs/nfs4filelayoutxdr.c
> @@ -1,6 +1,4 @@
> /*
> -* linux/fs/nfsd/nfs4filelayout_xdr.c
> -*
> * Copyright (c) 2006 The Regents of the University of Michigan.
> * All rights reserved.
> *
> @@ -33,8 +31,6 @@
> *
> *
> */
> -#if defined(CONFIG_EXPORTFS_FILE_LAYOUT)
> -
> #include <linux/module.h>
> #include <linux/sunrpc/svc.h>
> #include <linux/nfsd/nfsd.h>
> @@ -226,5 +222,3 @@ out:
> return error;
> }
> EXPORT_SYMBOL(filelayout_encode_layout);
> -
> -#endif /* CONFIG_EXPORTFS_FILE_LAYOUT */
> diff --git a/fs/gfs2/export.c b/fs/gfs2/export.c
> index 9cea712..d15876e 100644
> --- a/fs/gfs2/export.c
> +++ b/fs/gfs2/export.c
> @@ -254,3 +254,4 @@ const struct export_operations gfs2_export_ops = {
> .get_name = gfs2_get_name,
> .get_parent = gfs2_get_parent,
> };
> +
> diff --git a/fs/nfsd/nfs4pnfsd.c b/fs/nfsd/nfs4pnfsd.c
> index 4849463..aa7abad 100644
> --- a/fs/nfsd/nfs4pnfsd.c
> +++ b/fs/nfsd/nfs4pnfsd.c
> @@ -21,8 +21,6 @@
> *
> *****************************************************************************/
>
> -#if defined(CONFIG_PNFSD)
> -
> #include <linux/param.h>
> #include <linux/slab.h>
> #include <linux/sunrpc/svc.h>
> @@ -66,18 +64,6 @@ nfsd4_init_pnfs_slabs(void)
> return 0;
> }
>
> -static struct nfs4_file *
> -find_alloc_file(struct inode *ino, struct svc_fh *current_fh)
> -{
> - struct nfs4_file *fp;
> -
> - fp = find_file(ino);
> - if (fp)
> - return fp;
> -
> - return alloc_init_file(ino, current_fh);
> -}
> -
> static struct nfs4_layout_state *
> alloc_init_layout_state(struct nfs4_client *clp, struct nfs4_file *fp,
> stateid_t *stateid)
> @@ -717,8 +703,8 @@ int nfs4_pnfs_return_layout(struct super_block *sb, struct svc_fh *current_fh,
> if (!clp)
> goto out;
>
> - fp = find_file(ino);
> if (lrp->args.lr_return_type == RETURN_FILE) {
> + fp = find_file(ino);
> if (!fp) {
> printk(KERN_ERR "%s: RETURN_FILE: no nfs4_file for "
> "ino %p:%lu\n",
> @@ -778,4 +764,3 @@ void pnfs_expire_client(struct nfs4_client *clp)
> }
> spin_unlock(&layout_lock);
> }
> -#endif /* CONFIG_PNFSD */
> diff --git a/fs/nfsd/nfs4pnfsdlm.c b/fs/nfsd/nfs4pnfsdlm.c
> index b3027fe..ed2e940 100644
> --- a/fs/nfsd/nfs4pnfsdlm.c
> +++ b/fs/nfsd/nfs4pnfsdlm.c
> @@ -40,7 +40,7 @@ struct dlm_device_entry {
> struct list_head dlm_dev_list;
> char disk_name[DISK_NAME_LEN];
> int num_ds;
> - char ds_list[NFSD_PNFS_DS_LIST_MAX];
> + char ds_list[NFSD_DLM_DS_LIST_MAX];
> };
>
> static struct dlm_device_entry *
> @@ -108,7 +108,7 @@ nfsd4_set_pnfs_dlm_device(char *pnfs_dlm_device, int len)
> /* data server list */
> /* FIXME: need to check for comma separated valid ip format */
> len = strcspn(bufp, ":");
> - if (len > NFSD_PNFS_DS_LIST_MAX)
> + if (len > NFSD_DLM_DS_LIST_MAX)
> goto out_free;
> memcpy(new->ds_list, bufp, len);
>
> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> index d99caae..bc359ea 100644
> --- a/fs/nfsd/nfs4state.c
> +++ b/fs/nfsd/nfs4state.c
> @@ -1726,7 +1726,7 @@ out:
> }
>
> /* OPEN Share state helper functions */
> -inline struct nfs4_file *
> +static inline struct nfs4_file *
> alloc_init_file(struct inode *ino, struct svc_fh *current_fh)
> {
> struct nfs4_file *fp;
> @@ -1941,6 +1941,18 @@ find_file(struct inode *ino)
> return NULL;
> }
>
> +struct nfs4_file *
> +find_alloc_file(struct inode *ino, struct svc_fh *current_fh)
> +{
> + struct nfs4_file *fp;
> +
> + fp = find_file(ino);
> + if (fp)
> + return fp;
> +
> + return alloc_init_file(ino, current_fh);
> +}
> +
> static inline int access_valid(u32 x, u32 minorversion)
> {
> if ((x & NFS4_SHARE_ACCESS_MASK) < NFS4_SHARE_ACCESS_READ)
> @@ -2863,10 +2875,8 @@ nfs4_preprocess_stateid_op(struct nfsd4_compound_state *cstate,
> if (grace_disallows_io(ino))
> return nfserr_grace;
>
> -#if defined(CONFIG_PNFSD)
> if (pnfs_fh_is_ds(¤t_fh->fh_handle))
> return 0;
> -#endif /* CONFIG_PNFSD */
>
> if (nfsd4_has_session(cstate))
> flags |= HAS_SESSION;
> @@ -4183,4 +4193,3 @@ nfs4_reset_lease(time_t leasetime)
> {
> user_lease_time = leasetime;
> }
> -
> diff --git a/fs/nfsd/nfsfh.c b/fs/nfsd/nfsfh.c
> index 7d624f4..8300b2f 100644
> --- a/fs/nfsd/nfsfh.c
> +++ b/fs/nfsd/nfsfh.c
> @@ -22,12 +22,8 @@
> #include <linux/sunrpc/svc.h>
> #include <linux/sunrpc/svcauth_gss.h>
> #include <linux/nfsd/nfsd.h>
> -#include "auth.h"
> -
> -#if defined(CONFIG_PNFSD)
> -#include <linux/nfsd/state.h>
> #include <linux/nfsd/nfsd4_pnfs.h>
> -#endif /* CONFIG_PNFSD */
> +#include "auth.h"
>
> #define NFSDDBG_FACILITY NFSDDBG_FH
>
> diff --git a/fs/nfsd/pnfsd.h b/fs/nfsd/pnfsd.h
> index 7d255f5..c3354e8 100644
> --- a/fs/nfsd/pnfsd.h
> +++ b/fs/nfsd/pnfsd.h
> @@ -34,8 +34,6 @@
> #ifndef LINUX_NFSD_PNFSD_H
> #define LINUX_NFSD_PNFSD_H
>
> -#if defined(CONFIG_PNFSD)
> -
> #include <linux/nfsd/state.h>
> #include <linux/nfsd/nfsd4_pnfs.h>
>
> @@ -64,6 +62,4 @@ int nfs4_pnfs_get_layout(struct nfsd4_pnfs_layoutget *, struct exp_xdr_stream *)
> int nfs4_pnfs_return_layout(struct super_block *, struct svc_fh *,
> struct nfsd4_pnfs_layoutreturn *);
>
> -#endif /* CONFIG_PNFSD */
> -
> #endif /* LINUX_NFSD_PNFSD_H */
> diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h
> index 3c251f4..a899cff 100644
> --- a/include/linux/nfs4.h
> +++ b/include/linux/nfs4.h
> @@ -548,7 +548,6 @@ enum state_protect_how4 {
> SP4_SSV = 2
> };
>
> -#if defined(CONFIG_PNFS) || defined(CONFIG_PNFSD)
> enum pnfs_layouttype {
> LAYOUT_NFSV4_FILES = 1,
> LAYOUT_OSD2_OBJECTS = 2,
> @@ -591,7 +590,6 @@ enum filelayout_hint_care4 {
> NFLH4_CARE_STRIPE_UNIT_SIZE = 0x00000040,
> NFLH4_CARE_STRIPE_COUNT = 0x00000080
> };
> -#endif /* defined(CONFIG_PNFS) || defined(CONFIG_PNFSD) */
>
> #endif
> #endif
> diff --git a/include/linux/nfsd/nfsd.h b/include/linux/nfsd/nfsd.h
> index 6eb5c6e..c61e220 100644
> --- a/include/linux/nfsd/nfsd.h
> +++ b/include/linux/nfsd/nfsd.h
> @@ -181,14 +181,6 @@ static inline void nfs4_reset_lease(time_t leasetime) { }
> static inline int nfs4_reset_recoverydir(char *recdir) { return 0; }
> #endif
>
> -#ifdef CONFIG_PNFSD
> -/* Length of comma separated pnfs data server IPv4 addresses. Enough room for
> - * 32 addresses.
> - */
> -#define NFSD_PNFS_DS_LIST_MAX 512
> -
> -#endif
> -
> /*
> * lockd binding
> */
> diff --git a/include/linux/nfsd/nfsd4_pnfs.h b/include/linux/nfsd/nfsd4_pnfs.h
> index e96c2d4..dbed31a 100644
> --- a/include/linux/nfsd/nfsd4_pnfs.h
> +++ b/include/linux/nfsd/nfsd4_pnfs.h
> @@ -169,6 +169,8 @@ struct pnfs_export_operations {
> int (*can_merge_layouts) (u32 layout_type);
> };
>
> +#if defined(CONFIG_PNFSD)
> +
> /*
> * fh_fsid_type is overloaded to indicate whether a filehandle was one supplied
> * to a DS by LAYOUTGET. nfs4_preprocess_stateid_op() uses this to decide how
> @@ -196,4 +198,13 @@ static inline int pnfs_fh_fsid_type(struct knfsd_fh *fh)
> return fsid_type;
> }
>
> +#else /* CONFIG_PNFSD */
> +
> +static inline int pnfs_fh_is_ds(struct knfsd_fh *fh)
> +{
> + return 0;
> +}
> +
> +#endif /* CONFIG_PNFSD */
> +
> #endif /* _LINUX_NFSD_NFSD4_PNFS_H */
> diff --git a/include/linux/nfsd/state.h b/include/linux/nfsd/state.h
> index 8cf7e51..16ee98c 100644
> --- a/include/linux/nfsd/state.h
> +++ b/include/linux/nfsd/state.h
> @@ -415,7 +415,7 @@ extern int nfsd4_create_clid_dir(struct nfs4_client *clp);
> extern void nfsd4_remove_clid_dir(struct nfs4_client *clp);
> extern void nfsd4_free_slab(struct kmem_cache **);
> extern struct nfs4_file *find_file(struct inode *);
> -extern struct nfs4_file *alloc_init_file(struct inode *, struct svc_fh *);
> +extern struct nfs4_file *find_alloc_file(struct inode *, struct svc_fh *);
> extern void put_nfs4_file(struct nfs4_file *);
> extern void get_nfs4_file(struct nfs4_file *);
> extern struct nfs4_client *find_confirmed_client(clientid_t *);
> diff --git a/include/linux/nfsd/xdr4.h b/include/linux/nfsd/xdr4.h
> index 8e36ac3..831151f 100644
> --- a/include/linux/nfsd/xdr4.h
> +++ b/include/linux/nfsd/xdr4.h
> @@ -515,14 +515,6 @@ struct nfsd4_compoundres {
> struct nfsd4_compound_state cstate;
> };
>
> -static inline __be32 *
> -nfsd4_xdr_reserve_space(struct nfsd4_compoundres *resp, size_t nbytes)
> -{
> - __be32 *p = resp->p;
> - BUG_ON(p + XDR_QUADLEN(nbytes) > resp->end);
> - return p;
> -}
> -
> static inline bool nfsd4_is_solo_sequence(struct nfsd4_compoundres *resp)
> {
> struct nfsd4_compoundargs *args = resp->rqstp->rq_argp;
> _______________________________________________
> pNFS mailing list
> pNFS@linux-nfs.org
> http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs
next prev parent reply other threads:[~2009-12-07 9:53 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-07 9:26 [PATCH v2 0/35] Initial pnfsd file layout support Benny Halevy
2009-12-07 9:29 ` [PATCH v2 01/35] pnfsd: Define CONFIG_PNFSD Benny Halevy
2009-12-07 9:30 ` [PATCH v2 02/35] pnfsd: define NFSDDBG_PNFS Benny Halevy
2009-12-07 9:30 ` [PATCH v2 03/35] pnfsd, pnfs: protocol level pnfs constants Benny Halevy
2009-12-07 19:25 ` J. Bruce Fields
2009-12-08 14:31 ` Benny Halevy
2009-12-07 9:30 ` [PATCH v2 04/35] pnfsd: return pnfs flags on exchange_id Benny Halevy
2009-12-07 19:51 ` J. Bruce Fields
2009-12-08 14:46 ` Benny Halevy
2009-12-07 9:30 ` [PATCH v2 05/35] pnfsd: don't set up back channel on create_session for ds Benny Halevy
2009-12-07 20:10 ` J. Bruce Fields
2009-12-08 14:50 ` Benny Halevy
2009-12-07 9:31 ` [PATCH v2 06/35] pnfsd: introduce pnfsd header files Benny Halevy
2009-12-07 9:31 ` [PATCH v2 07/35] pnfsd: define pnfs_export_operations Benny Halevy
2009-12-07 9:31 ` [PATCH v2 08/35] pnfsd: add pnfs export option Benny Halevy
2009-12-07 9:31 ` [PATCH v2 09/35] pnfsd: layout verify Benny Halevy
2009-12-07 9:31 ` [PATCH v2 10/35] pnfsd: introduce exp_xdr.h Benny Halevy
2009-12-07 9:32 ` [PATCH v2 11/35] pnfsd: get device list/info Benny Halevy
2009-12-10 17:30 ` J. Bruce Fields
2009-12-10 18:53 ` Benny Halevy
2009-12-10 19:04 ` J. Bruce Fields
2009-12-10 19:21 ` Benny Halevy
2009-12-10 19:43 ` J. Bruce Fields
2009-12-07 9:32 ` [PATCH v2 12/35] pnfsd: filelayout: " Benny Halevy
2009-12-07 9:32 ` [PATCH v2 13/35] pnfsd: layout get Benny Halevy
2009-12-07 9:32 ` [PATCH v2 14/35] pnfsd: filelayout: layout encoding Benny Halevy
2009-12-07 9:33 ` [PATCH v2 15/35] pnfsd: Helper functions for layout stateid processing Benny Halevy
2009-12-07 9:33 ` [PATCH v2 16/35] pnfsd: helper function for stateid checking Benny Halevy
2009-12-07 9:33 ` [PATCH v2 17/35] pnfsd: process the layout stateid Benny Halevy
2009-12-07 9:33 ` [PATCH v2 18/35] pnfsd: add helper functions for identifying DS stateids Benny Halevy
2009-12-07 9:33 ` [PATCH v2 19/35] pnfsd: accept all ds stateids Benny Halevy
2009-12-07 9:34 ` [PATCH v2 20/35] pnfsd: LAYOUTGET layout stateid processing Benny Halevy
2009-12-07 9:34 ` [PATCH v2 21/35] pnfsd: destroy layout on expire_client Benny Halevy
2009-12-07 9:34 ` [PATCH v2 22/35] pnfsd: support layout_type attribute Benny Halevy
2009-12-07 9:34 ` [PATCH v2 23/35] pnfsd: per block device dlm data server list cache Benny Halevy
2009-12-07 9:35 ` [PATCH v2 24/35] pnfsd: new nfsd filesystem file: pnfs_dlm_device Benny Halevy
2009-12-07 9:35 ` [PATCH v2 25/35] pnfsd: nfsd4_pnfs_dlm_getdeviter Benny Halevy
2009-12-07 9:35 ` [PATCH v2 26/35] pnfsd: nfsd4_pnfs_dlm_getdevinfo Benny Halevy
2009-12-07 9:35 ` [PATCH v2 27/35] pnfsd: nfsd4_pnfs_dlm_layoutget Benny Halevy
2009-12-07 9:36 ` [PATCH v2 28/35] pnfsd: add dlm file layout layout-type Benny Halevy
2009-12-07 9:36 ` [PATCH v2 29/35] pnfsd: dlm pnfs_export_operations Benny Halevy
2009-12-07 9:36 ` [PATCH v2 30/35] pnfsd: gfs2: use generic file layout pnfs operations vector Benny Halevy
2009-12-07 9:36 ` [PATCH v2 31/35] posix_acl: resolve compile dependency in posix_acl.h Benny Halevy
2009-12-07 9:36 ` [PATCH v2 32/35] nfs: resolve compile dependency in nfs_xdr.h Benny Halevy
2009-12-07 9:37 ` [PATCH v2 33/35] pnfsd: layout commit Benny Halevy
2009-12-07 9:37 ` [PATCH v2 34/35] pnfsd: layout return Benny Halevy
2009-12-07 9:37 ` [PATCH v2 35/35] pnfsd: layoutreturn stateid processing Benny Halevy
2009-12-07 9:54 ` Benny Halevy [this message]
2009-12-09 10:24 ` [PATCH 0/9] fixes to Initial pnfsd file layout support v2, comments {3,4,5}/35 Benny Halevy
2009-12-09 10:27 ` [PATCH 1/3] SQUASHME: pnfsd: unify enum pnfs_layout{return,recall}_type Benny Halevy
2009-12-09 10:27 ` [PATCH 2/3] SQUASHME: pnfsd: always set both MDS and DS exchangeid capability flags Benny Halevy
2009-12-09 18:54 ` J. Bruce Fields
2009-12-09 10:27 ` [PATCH 3/3] SQUASHME: pnfsd: define a is_ds_only_session helper Benny Halevy
2009-12-09 10:27 ` [PATCH 4/4] SQUASHME: pnfsd: use only RETURN_* constants Benny Halevy
2009-12-09 10:27 ` [PATCH 5/5] SQUASHME: spnfs: " Benny Halevy
2009-12-09 10:28 ` [PATCH 6/6] SQUASHME: spnfs-block: " Benny Halevy
2009-12-09 10:28 ` [PATCH 7/7] SQUASHME: pnfsd-exofs: use only pnfs_layoutreturn_type Benny Halevy
2009-12-09 10:28 ` [PATCH 8/9] SQUASHME: pnfs: " Benny Halevy
2009-12-09 10:28 ` [PATCH 9/9] SQUASHME: pnfs: filelayout: mask out server's MDS capability flag for DSs Benny Halevy
2009-12-09 22:21 ` [pnfs] " 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=4B1CD0ED.9020305@panasas.com \
--to=bhalevy@panasas.com \
--cc=bfields@citi.umich.edu \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=pnfs@linux-nfs.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox