Skip to content

Commit

Permalink
NFS: Create a common results structure for reads and writes
Browse files Browse the repository at this point in the history
Reads and writes have very similar results.  This patch combines the two
structs together with comments to show where the differing fields are
used.

Signed-off-by: Anna Schumaker <[email protected]>
Signed-off-by: Trond Myklebust <[email protected]>
  • Loading branch information
amschuma-ntap authored and trondmypd committed May 28, 2014
1 parent 3c6b899 commit 9137bdf
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 33 deletions.
6 changes: 3 additions & 3 deletions fs/nfs/nfs2xdr.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ static void print_overflow_msg(const char *func, const struct xdr_stream *xdr)
/*
* typedef opaque nfsdata<>;
*/
static int decode_nfsdata(struct xdr_stream *xdr, struct nfs_readres *result)
static int decode_nfsdata(struct xdr_stream *xdr, struct nfs_pgio_res *result)
{
u32 recvd, count;
__be32 *p;
Expand Down Expand Up @@ -857,7 +857,7 @@ static int nfs2_xdr_dec_readlinkres(struct rpc_rqst *req,
* };
*/
static int nfs2_xdr_dec_readres(struct rpc_rqst *req, struct xdr_stream *xdr,
struct nfs_readres *result)
struct nfs_pgio_res *result)
{
enum nfs_stat status;
int error;
Expand All @@ -878,7 +878,7 @@ static int nfs2_xdr_dec_readres(struct rpc_rqst *req, struct xdr_stream *xdr,
}

static int nfs2_xdr_dec_writeres(struct rpc_rqst *req, struct xdr_stream *xdr,
struct nfs_writeres *result)
struct nfs_pgio_res *result)
{
/* All NFSv2 writes are "file sync" writes */
result->verf->committed = NFS_FILE_SYNC;
Expand Down
8 changes: 4 additions & 4 deletions fs/nfs/nfs3xdr.c
Original file line number Diff line number Diff line change
Expand Up @@ -1589,7 +1589,7 @@ static int nfs3_xdr_dec_readlink3res(struct rpc_rqst *req,
* };
*/
static int decode_read3resok(struct xdr_stream *xdr,
struct nfs_readres *result)
struct nfs_pgio_res *result)
{
u32 eof, count, ocount, recvd;
__be32 *p;
Expand Down Expand Up @@ -1625,7 +1625,7 @@ static int decode_read3resok(struct xdr_stream *xdr,
}

static int nfs3_xdr_dec_read3res(struct rpc_rqst *req, struct xdr_stream *xdr,
struct nfs_readres *result)
struct nfs_pgio_res *result)
{
enum nfs_stat status;
int error;
Expand Down Expand Up @@ -1673,7 +1673,7 @@ static int nfs3_xdr_dec_read3res(struct rpc_rqst *req, struct xdr_stream *xdr,
* };
*/
static int decode_write3resok(struct xdr_stream *xdr,
struct nfs_writeres *result)
struct nfs_pgio_res *result)
{
__be32 *p;

Expand All @@ -1697,7 +1697,7 @@ static int decode_write3resok(struct xdr_stream *xdr,
}

static int nfs3_xdr_dec_write3res(struct rpc_rqst *req, struct xdr_stream *xdr,
struct nfs_writeres *result)
struct nfs_pgio_res *result)
{
enum nfs_stat status;
int error;
Expand Down
9 changes: 5 additions & 4 deletions fs/nfs/nfs4xdr.c
Original file line number Diff line number Diff line change
Expand Up @@ -5087,7 +5087,8 @@ static int decode_putrootfh(struct xdr_stream *xdr)
return decode_op_hdr(xdr, OP_PUTROOTFH);
}

static int decode_read(struct xdr_stream *xdr, struct rpc_rqst *req, struct nfs_readres *res)
static int decode_read(struct xdr_stream *xdr, struct rpc_rqst *req,
struct nfs_pgio_res *res)
{
__be32 *p;
uint32_t count, eof, recvd;
Expand Down Expand Up @@ -5341,7 +5342,7 @@ static int decode_setclientid_confirm(struct xdr_stream *xdr)
return decode_op_hdr(xdr, OP_SETCLIENTID_CONFIRM);
}

static int decode_write(struct xdr_stream *xdr, struct nfs_writeres *res)
static int decode_write(struct xdr_stream *xdr, struct nfs_pgio_res *res)
{
__be32 *p;
int status;
Expand Down Expand Up @@ -6638,7 +6639,7 @@ static int nfs4_xdr_dec_readdir(struct rpc_rqst *rqstp, struct xdr_stream *xdr,
* Decode Read response
*/
static int nfs4_xdr_dec_read(struct rpc_rqst *rqstp, struct xdr_stream *xdr,
struct nfs_readres *res)
struct nfs_pgio_res *res)
{
struct compound_hdr hdr;
int status;
Expand All @@ -6663,7 +6664,7 @@ static int nfs4_xdr_dec_read(struct rpc_rqst *rqstp, struct xdr_stream *xdr,
* Decode WRITE response
*/
static int nfs4_xdr_dec_write(struct rpc_rqst *rqstp, struct xdr_stream *xdr,
struct nfs_writeres *res)
struct nfs_pgio_res *res)
{
struct compound_hdr hdr;
int status;
Expand Down
2 changes: 1 addition & 1 deletion fs/nfs/read.c
Original file line number Diff line number Diff line change
Expand Up @@ -471,7 +471,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_pgio_args *argp = &data->args;
struct nfs_readres *resp = &data->res;
struct nfs_pgio_res *resp = &data->res;

/* This is a short read! */
nfs_inc_stats(data->header->inode, NFSIOS_SHORTREAD);
Expand Down
2 changes: 1 addition & 1 deletion fs/nfs/write.c
Original file line number Diff line number Diff line change
Expand Up @@ -1389,7 +1389,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_pgio_args *argp = &data->args;
struct nfs_writeres *resp = &data->res;
struct nfs_pgio_res *resp = &data->res;
struct inode *inode = data->header->inode;
int status;

Expand Down
32 changes: 12 additions & 20 deletions include/linux/nfs_xdr.h
Original file line number Diff line number Diff line change
Expand Up @@ -488,16 +488,6 @@ struct nfs4_delegreturnres {
const struct nfs_server *server;
};

/*
* Arguments to the read call.
*/
struct nfs_readres {
struct nfs4_sequence_res seq_res;
struct nfs_fattr * fattr;
__u32 count;
int eof;
};

/*
* Arguments to the write call.
*/
Expand All @@ -510,14 +500,6 @@ struct nfs_writeverf {
enum nfs3_stable_how committed;
};

struct nfs_writeres {
struct nfs4_sequence_res seq_res;
struct nfs_fattr * fattr;
struct nfs_writeverf * verf;
__u32 count;
const struct nfs_server *server;
};

/*
* Arguments shared by the read and write call.
*/
Expand All @@ -535,6 +517,16 @@ struct nfs_pgio_args {
enum nfs3_stable_how stable; /* used by write */
};

struct nfs_pgio_res {
struct nfs4_sequence_res seq_res;
struct nfs_fattr * fattr;
__u32 count;
int eof; /* used by read */
struct nfs_writeverf * verf; /* used by write */
const struct nfs_server *server; /* used by write */

};

/*
* Arguments to the commit call.
*/
Expand Down Expand Up @@ -1261,7 +1253,7 @@ struct nfs_read_data {
struct rpc_task task;
struct nfs_fattr fattr; /* fattr storage */
struct nfs_pgio_args args;
struct nfs_readres res;
struct nfs_pgio_res res;
unsigned long timestamp; /* For lease renewal */
int (*read_done_cb) (struct rpc_task *task, struct nfs_read_data *data);
__u64 mds_offset;
Expand Down Expand Up @@ -1313,7 +1305,7 @@ struct nfs_write_data {
struct nfs_fattr fattr;
struct nfs_writeverf verf;
struct nfs_pgio_args args; /* argument struct */
struct nfs_writeres res; /* result struct */
struct nfs_pgio_res res; /* result struct */
unsigned long timestamp; /* For lease renewal */
int (*write_done_cb) (struct rpc_task *task, struct nfs_write_data *data);
__u64 mds_offset; /* Filelayout dense stripe */
Expand Down

0 comments on commit 9137bdf

Please sign in to comment.