aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Tao <tao.peng@primarydata.com>2014-09-05 12:53:21 -0400
committerTom Haynes <loghyr@primarydata.com>2015-02-03 14:06:40 -0500
commit4579d6b897ee1b2557517fd536fb17eeb13481ad (patch)
tree92af129f8ab2576f6f2499520105a1745e5b3924
parentaabff4ddcac0d36dd26546f5b905c27682e7bf89 (diff)
nfs41: pass iomode through layoutreturn args
So that it is possible to return a specific iomode layouts. Signed-off-by: Peng Tao <tao.peng@primarydata.com> Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com>
-rw-r--r--fs/nfs/nfs4xdr.c2
-rw-r--r--fs/nfs/pnfs.c1
-rw-r--r--include/linux/nfs_xdr.h1
3 files changed, 3 insertions, 1 deletions
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
index 7d8d7a47f771..3c3ff633dd17 100644
--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -2012,7 +2012,7 @@ encode_layoutreturn(struct xdr_stream *xdr,
2012 p = reserve_space(xdr, 16); 2012 p = reserve_space(xdr, 16);
2013 *p++ = cpu_to_be32(0); /* reclaim. always 0 for now */ 2013 *p++ = cpu_to_be32(0); /* reclaim. always 0 for now */
2014 *p++ = cpu_to_be32(args->layout_type); 2014 *p++ = cpu_to_be32(args->layout_type);
2015 *p++ = cpu_to_be32(IOMODE_ANY); 2015 *p++ = cpu_to_be32(args->iomode);
2016 *p = cpu_to_be32(RETURN_FILE); 2016 *p = cpu_to_be32(RETURN_FILE);
2017 p = reserve_space(xdr, 16); 2017 p = reserve_space(xdr, 16);
2018 p = xdr_encode_hyper(p, 0); 2018 p = xdr_encode_hyper(p, 0);
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index 7e1bac189d1c..1b544c1a746c 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -914,6 +914,7 @@ _pnfs_return_layout(struct inode *ino)
914 lrp->args.stateid = stateid; 914 lrp->args.stateid = stateid;
915 lrp->args.layout_type = NFS_SERVER(ino)->pnfs_curr_ld->id; 915 lrp->args.layout_type = NFS_SERVER(ino)->pnfs_curr_ld->id;
916 lrp->args.inode = ino; 916 lrp->args.inode = ino;
917 lrp->args.iomode = IOMODE_ANY;
917 lrp->args.layout = lo; 918 lrp->args.layout = lo;
918 lrp->clp = NFS_SERVER(ino)->nfs_client; 919 lrp->clp = NFS_SERVER(ino)->nfs_client;
919 lrp->cred = lo->plh_lc_cred; 920 lrp->cred = lo->plh_lc_cred;
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
index 962f461c065d..4fd7793d45d1 100644
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -293,6 +293,7 @@ struct nfs4_layoutreturn_args {
293 struct nfs4_sequence_args seq_args; 293 struct nfs4_sequence_args seq_args;
294 struct pnfs_layout_hdr *layout; 294 struct pnfs_layout_hdr *layout;
295 struct inode *inode; 295 struct inode *inode;
296 enum pnfs_iomode iomode;
296 nfs4_stateid stateid; 297 nfs4_stateid stateid;
297 __u32 layout_type; 298 __u32 layout_type;
298}; 299};