]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
NFS: Create a common argument structure for reads and writes
authorAnna Schumaker <Anna.Schumaker@netapp.com>
Tue, 6 May 2014 13:12:24 +0000 (09:12 -0400)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Wed, 28 May 2014 22:12:02 +0000 (18:12 -0400)
Reads and writes have very similar arguments.  This patch combines them
together and documents the few fields used only by write.

Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/nfs2xdr.c
fs/nfs/nfs3xdr.c
fs/nfs/nfs4proc.c
fs/nfs/nfs4xdr.c
fs/nfs/read.c
fs/nfs/write.c
include/linux/nfs_xdr.h

index 62db136339ea9cb95b6d48ca1b4427b9723ad662..461cd8bd9401728d74378a04ba4319a145d318ca 100644 (file)
@@ -613,7 +613,7 @@ static void nfs2_xdr_enc_readlinkargs(struct rpc_rqst *req,
  *     };
  */
 static void encode_readargs(struct xdr_stream *xdr,
-                           const struct nfs_readargs *args)
+                           const struct nfs_pgio_args *args)
 {
        u32 offset = args->offset;
        u32 count = args->count;
@@ -629,7 +629,7 @@ static void encode_readargs(struct xdr_stream *xdr,
 
 static void nfs2_xdr_enc_readargs(struct rpc_rqst *req,
                                  struct xdr_stream *xdr,
-                                 const struct nfs_readargs *args)
+                                 const struct nfs_pgio_args *args)
 {
        encode_readargs(xdr, args);
        prepare_reply_buffer(req, args->pages, args->pgbase,
@@ -649,7 +649,7 @@ static void nfs2_xdr_enc_readargs(struct rpc_rqst *req,
  *     };
  */
 static void encode_writeargs(struct xdr_stream *xdr,
-                            const struct nfs_writeargs *args)
+                            const struct nfs_pgio_args *args)
 {
        u32 offset = args->offset;
        u32 count = args->count;
@@ -669,7 +669,7 @@ static void encode_writeargs(struct xdr_stream *xdr,
 
 static void nfs2_xdr_enc_writeargs(struct rpc_rqst *req,
                                   struct xdr_stream *xdr,
-                                  const struct nfs_writeargs *args)
+                                  const struct nfs_pgio_args *args)
 {
        encode_writeargs(xdr, args);
        xdr->buf->flags |= XDRBUF_WRITE;
index fa6d72131c19e64565df105eeb9ed472bb180bf0..02f16c2120071e52fd1cb17d380620faa3324c93 100644 (file)
@@ -953,7 +953,7 @@ static void nfs3_xdr_enc_readlink3args(struct rpc_rqst *req,
  *     };
  */
 static void encode_read3args(struct xdr_stream *xdr,
-                            const struct nfs_readargs *args)
+                            const struct nfs_pgio_args *args)
 {
        __be32 *p;
 
@@ -966,7 +966,7 @@ static void encode_read3args(struct xdr_stream *xdr,
 
 static void nfs3_xdr_enc_read3args(struct rpc_rqst *req,
                                   struct xdr_stream *xdr,
-                                  const struct nfs_readargs *args)
+                                  const struct nfs_pgio_args *args)
 {
        encode_read3args(xdr, args);
        prepare_reply_buffer(req, args->pages, args->pgbase,
@@ -992,7 +992,7 @@ static void nfs3_xdr_enc_read3args(struct rpc_rqst *req,
  *     };
  */
 static void encode_write3args(struct xdr_stream *xdr,
-                             const struct nfs_writeargs *args)
+                             const struct nfs_pgio_args *args)
 {
        __be32 *p;
 
@@ -1008,7 +1008,7 @@ static void encode_write3args(struct xdr_stream *xdr,
 
 static void nfs3_xdr_enc_write3args(struct rpc_rqst *req,
                                    struct xdr_stream *xdr,
-                                   const struct nfs_writeargs *args)
+                                   const struct nfs_pgio_args *args)
 {
        encode_write3args(xdr, args);
        xdr->buf->flags |= XDRBUF_WRITE;
index 21cd1f2ee35aae8c3ab8ad8866cb9b7715c61ac3..4794ca693367130109949e15c3ff0a1464318775 100644 (file)
@@ -4055,7 +4055,7 @@ static int nfs4_read_done_cb(struct rpc_task *task, struct nfs_read_data *data)
 }
 
 static bool nfs4_read_stateid_changed(struct rpc_task *task,
-               struct nfs_readargs *args)
+               struct nfs_pgio_args *args)
 {
 
        if (!nfs4_error_stateid_expired(task->tk_status) ||
@@ -4121,7 +4121,7 @@ static int nfs4_write_done_cb(struct rpc_task *task, struct nfs_write_data *data
 }
 
 static bool nfs4_write_stateid_changed(struct rpc_task *task,
-               struct nfs_writeargs *args)
+               struct nfs_pgio_args *args)
 {
 
        if (!nfs4_error_stateid_expired(task->tk_status) ||
index 73ce8d4fe2c8e2a34677efdeccccfd8e936195f4..032159c36a570719bba4fd23e1326b93836f49ec 100644 (file)
@@ -1556,7 +1556,8 @@ static void encode_putrootfh(struct xdr_stream *xdr, struct compound_hdr *hdr)
        encode_op_hdr(xdr, OP_PUTROOTFH, decode_putrootfh_maxsz, hdr);
 }
 
-static void encode_read(struct xdr_stream *xdr, const struct nfs_readargs *args, struct compound_hdr *hdr)
+static void encode_read(struct xdr_stream *xdr, const struct nfs_pgio_args *args,
+                       struct compound_hdr *hdr)
 {
        __be32 *p;
 
@@ -1701,7 +1702,8 @@ static void encode_setclientid_confirm(struct xdr_stream *xdr, const struct nfs4
        encode_nfs4_verifier(xdr, &arg->confirm);
 }
 
-static void encode_write(struct xdr_stream *xdr, const struct nfs_writeargs *args, struct compound_hdr *hdr)
+static void encode_write(struct xdr_stream *xdr, const struct nfs_pgio_args *args,
+                        struct compound_hdr *hdr)
 {
        __be32 *p;
 
@@ -2451,7 +2453,7 @@ static void nfs4_xdr_enc_readdir(struct rpc_rqst *req, struct xdr_stream *xdr,
  * Encode a READ request
  */
 static void nfs4_xdr_enc_read(struct rpc_rqst *req, struct xdr_stream *xdr,
-                             struct nfs_readargs *args)
+                             struct nfs_pgio_args *args)
 {
        struct compound_hdr hdr = {
                .minorversion = nfs4_xdr_minorversion(&args->seq_args),
@@ -2513,7 +2515,7 @@ static void nfs4_xdr_enc_getacl(struct rpc_rqst *req, struct xdr_stream *xdr,
  * Encode a WRITE request
  */
 static void nfs4_xdr_enc_write(struct rpc_rqst *req, struct xdr_stream *xdr,
-                              struct nfs_writeargs *args)
+                              struct nfs_pgio_args *args)
 {
        struct compound_hdr hdr = {
                .minorversion = nfs4_xdr_minorversion(&args->seq_args),
index 7f87461be3a9d60184bfd47d5adcb96e7df58060..46d5552060230ba2821897e6afe8e6e6f4431379 100644 (file)
@@ -470,7 +470,7 @@ int nfs_readpage_result(struct rpc_task *task, struct nfs_read_data *data)
 
 static void nfs_readpage_retry(struct rpc_task *task, struct nfs_read_data *data)
 {
-       struct nfs_readargs *argp = &data->args;
+       struct nfs_pgio_args *argp = &data->args;
        struct nfs_readres *resp = &data->res;
 
        /* This is a short read! */
index ee6d46fde76cf3743c92ca6460b31a6a46023c23..25ba3830ec8bdff39a1f03f8db308618a1dc8afd 100644 (file)
@@ -1388,7 +1388,7 @@ static int nfs_should_remove_suid(const struct inode *inode)
  */
 void nfs_writeback_done(struct rpc_task *task, struct nfs_write_data *data)
 {
-       struct nfs_writeargs    *argp = &data->args;
+       struct nfs_pgio_args    *argp = &data->args;
        struct nfs_writeres     *resp = &data->res;
        struct inode            *inode = data->header->inode;
        int status;
index 3e8fc1fe585bf3f8940d54ea9a052f2d1e99fe13..5875001928f932f9b41f810f9486c5d9a1fd09dd 100644 (file)
@@ -491,18 +491,6 @@ struct nfs4_delegreturnres {
 /*
  * Arguments to the read call.
  */
-struct nfs_readargs {
-       struct nfs4_sequence_args       seq_args;
-       struct nfs_fh *         fh;
-       struct nfs_open_context *context;
-       struct nfs_lock_context *lock_context;
-       nfs4_stateid            stateid;
-       __u64                   offset;
-       __u32                   count;
-       unsigned int            pgbase;
-       struct page **          pages;
-};
-
 struct nfs_readres {
        struct nfs4_sequence_res        seq_res;
        struct nfs_fattr *      fattr;
@@ -513,20 +501,6 @@ struct nfs_readres {
 /*
  * Arguments to the write call.
  */
-struct nfs_writeargs {
-       struct nfs4_sequence_args       seq_args;
-       struct nfs_fh *         fh;
-       struct nfs_open_context *context;
-       struct nfs_lock_context *lock_context;
-       nfs4_stateid            stateid;
-       __u64                   offset;
-       __u32                   count;
-       enum nfs3_stable_how    stable;
-       unsigned int            pgbase;
-       struct page **          pages;
-       const u32 *             bitmask;
-};
-
 struct nfs_write_verifier {
        char                    data[8];
 };
@@ -544,6 +518,23 @@ struct nfs_writeres {
        const struct nfs_server *server;
 };
 
+/*
+ * Arguments shared by the read and write call.
+ */
+struct nfs_pgio_args {
+       struct nfs4_sequence_args       seq_args;
+       struct nfs_fh *         fh;
+       struct nfs_open_context *context;
+       struct nfs_lock_context *lock_context;
+       nfs4_stateid            stateid;
+       __u64                   offset;
+       __u32                   count;
+       unsigned int            pgbase;
+       struct page **          pages;
+       const u32 *             bitmask;        /* used by write */
+       enum nfs3_stable_how    stable;         /* used by write */
+};
+
 /*
  * Arguments to the commit call.
  */
@@ -1269,7 +1260,7 @@ struct nfs_read_data {
        struct list_head        list;
        struct rpc_task         task;
        struct nfs_fattr        fattr;  /* fattr storage */
-       struct nfs_readargs args;
+       struct nfs_pgio_args    args;
        struct nfs_readres  res;
        unsigned long           timestamp;      /* For lease renewal */
        int (*read_done_cb) (struct rpc_task *task, struct nfs_read_data *data);
@@ -1321,7 +1312,7 @@ struct nfs_write_data {
        struct rpc_task         task;
        struct nfs_fattr        fattr;
        struct nfs_writeverf    verf;
-       struct nfs_writeargs    args;           /* argument struct */
+       struct nfs_pgio_args    args;           /* argument struct */
        struct nfs_writeres     res;            /* result struct */
        unsigned long           timestamp;      /* For lease renewal */
        int (*write_done_cb) (struct rpc_task *task, struct nfs_write_data *data);