[pnfs] [PATCH 01/14] 2.6-latest pnfs client nfs41_validate_seq_args change
andros at umich.edu
andros at umich.edu
Mon Nov 12 14:29:13 EST 2007
From: Andy Adamson <andros at umich.edu>
Replace struct nfs_server with struct nfs4_session so that
data server sessions can be used.
Signed-off by: Andy Adamson<andros at umich.edu>
---
fs/nfs/nfs4filelayout.c | 2 ++
fs/nfs/nfs4proc.c | 8 ++++----
fs/nfs/read.c | 14 ++++++++++----
fs/nfs/unlink.c | 4 ++--
fs/nfs/write.c | 9 +++++++--
include/linux/nfs_xdr.h | 2 +-
6 files changed, 26 insertions(+), 13 deletions(-)
diff --git a/fs/nfs/nfs4filelayout.c b/fs/nfs/nfs4filelayout.c
index 69f839d..c3db428 100644
--- a/fs/nfs/nfs4filelayout.c
+++ b/fs/nfs/nfs4filelayout.c
@@ -71,6 +71,8 @@ extern struct nfs_write_data *nfs_commit_alloc(void);
extern void nfs_commit_free(struct nfs_write_data *p);
extern void nfs_initiate_write(struct nfs_write_data *, struct rpc_clnt *, const struct rpc_call_ops *, int);
extern void nfs_initiate_read(struct nfs_read_data *data, struct rpc_clnt *clnt, const struct rpc_call_ops *call_ops);
+extern void nfs_read_validate(struct rpc_task *task, void *calldata);
+extern void nfs_readdata_release(void *data);
/* Callback operations to the pNFS client */
struct pnfs_client_operations * pnfs_callback_ops;
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 184706e..87df222 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -381,14 +381,14 @@ static int nfs41_setup_sequence(struct nfs4_session *session,
return 0;
}
-static int nfs41_validate_seq_args(struct nfs_server *server,
- void *args,
+static int nfs41_validate_seq_args(struct nfs4_session *session,
+ void *args,
void *res,
int cache_this,
struct rpc_task *task)
{
- return nfs41_setup_sequence(server->session,
- args, res,
+ return nfs41_setup_sequence(session,
+ args, res,
cache_this, task);
}
diff --git a/fs/nfs/read.c b/fs/nfs/read.c
index c4ce40b..dd98eca 100644
--- a/fs/nfs/read.c
+++ b/fs/nfs/read.c
@@ -247,7 +247,6 @@ void nfs_initiate_read(struct nfs_read_data *data, struct rpc_clnt *clnt,
nfs_execute_read(data);
}
-EXPORT_SYMBOL(nfs_initiate_read);
/*
* Generate multiple requests to fill a single page.
@@ -428,15 +427,16 @@ void nfs_read_validate(struct rpc_task *task, void *calldata)
{
struct nfs_read_data *data = calldata;
struct nfs_server *server = data->args.server;
- int (*setup_sequence)(struct nfs_server *,
+ struct nfs4_session *session = server->session;
+ int (*setup_sequence)(struct nfs4_session *,
void *, void *, int, struct rpc_task *);
setup_sequence = server->nfs_client->rpc_ops->validate_sequence_args;
- if (!setup_sequence || !setup_sequence(server,
+ if (!setup_sequence || !setup_sequence(session,
&data->args.seq_args,
&data->res.seq_res,
- 0, task))
+ 0, task))
rpc_start_call(task);
}
#endif
@@ -672,3 +672,9 @@ void nfs_destroy_readpagecache(void)
mempool_destroy(nfs_rdata_mempool);
kmem_cache_destroy(nfs_rdata_cachep);
}
+
+#ifdef CONFIG_PNFS
+EXPORT_SYMBOL(nfs_initiate_read);
+EXPORT_SYMBOL(nfs_readdata_release);
+EXPORT_SYMBOL(nfs_read_validate);
+#endif /* CONFIG_PNFS */
diff --git a/fs/nfs/unlink.c b/fs/nfs/unlink.c
index cf02321..22b0147 100644
--- a/fs/nfs/unlink.c
+++ b/fs/nfs/unlink.c
@@ -121,12 +121,12 @@ void nfs_unlink_validate(struct rpc_task *task, void *calldata)
{
struct nfs_unlinkdata *data = calldata;
struct nfs_server *server = NFS_SERVER(data->dir);
- int (*setup_sequence)(struct nfs_server *,
+ int (*setup_sequence)(struct nfs4_session *,
void *, void *, int, struct rpc_task *);
setup_sequence = NFS_PROTO(data->dir)->validate_sequence_args;
- if (!setup_sequence || !setup_sequence(server,
+ if (!setup_sequence || !setup_sequence(server->session,
&data->args.seq_args,
&data->res.seq_res,
1, task))
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index e3aad7d..603ddf1 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -1043,12 +1043,17 @@ void nfs_write_validate(struct rpc_task *task, void *calldata)
{
struct nfs_write_data *data = calldata;
struct nfs_server *server = NFS_SERVER(data->inode);
- int (*setup_sequence)(struct nfs_server *,
+ struct nfs4_session *session = server->session;
+ int (*setup_sequence)(struct nfs4_session *,
void *, void *, int, struct rpc_task *);
setup_sequence = NFS_PROTO(data->inode)->validate_sequence_args;
+#ifdef CONFIG_PNFS
+ if (data->session)
+ session = data->session;
+#endif /* CONFIG_PNFS */
- if (!setup_sequence || !setup_sequence(server,
+ if (!setup_sequence || !setup_sequence(session,
&data->args.seq_args,
&data->res.seq_res,
1, task))
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
index e02c921..4b443fe 100644
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -1163,7 +1163,7 @@ struct nfs_rpc_ops {
int (*file_release) (struct inode *, struct file *);
int (*lock)(struct file *, int, struct file_lock *);
void (*clear_acl_cache)(struct inode *);
- int (*validate_sequence_args)(struct nfs_server *,
+ int (*validate_sequence_args)(struct nfs4_session *,
void *args,
void *res,
int,
--
1.5.0.2
More information about the pNFS
mailing list