public inbox for linux-nfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/19]: merge pnfs client ops into nfs4's
@ 2010-06-17 14:47 Benny Halevy
  2010-06-17 14:48 ` [PATCH 01/19] SQUASHME: pnfs-submit: merge pnfs4_proc_setattr into nfs4_proc_setattr Benny Halevy
                   ` (18 more replies)
  0 siblings, 19 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:47 UTC (permalink / raw)
  To: NFS list

The following patchset folds the pnfs client ops into their
nfs4 counterparts.

Note that the pnfs implementation forked off of old versions
of the nfs ops but we failed to update the pnfs implementation
when the original code they were derived from changed so the
current state captures an unintentional deviation.

Merging back the code ensures that the common paths are
correctly used and we deal only with the pnfs-specific
functionality.

This solves the bug where we were using two client structures when
mounting the server more than once and seeing the session destroyed
repeatedly (and the server returning 10052 on DESTROY_SESSION) and
eventually hitting the session recovery deadlock reported here:
http://marc.info/?l=linux-nfs&m=127663654927724&w=2

Here's the list of patches:
[PATCH 01/19] SQUASHME: pnfs-submit: merge pnfs4_proc_setattr into nfs4_proc_setattr
[PATCH 02/19] SQUASHME: pnfs4_read_done status variable is unused
[PATCH 03/19] SQUASHME: pnfs-submit: optionally pass nfs_client to nfs4_async_handle_error
[PATCH 04/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 1
[PATCH 05/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 2
[PATCH 06/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 3
[PATCH 07/19] SQUASHME: pnfs-submit: get rid of pnfs4_read_done
[PATCH 08/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 1
[PATCH 09/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 2
[PATCH 10/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 3
[PATCH 11/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 4
[PATCH 12/19] SQUASHME: pnfs-submit: get rid of pnfs4_write_done
[PATCH 13/19] SQUASHME: pnfs-submit: merge pnfs4_commit_done into nfs4_commit_done - part 1
[PATCH 14/19] SQUASHME: pnfs-submit: merge pnfs4_commit_done into nfs4_commit_done - part 2
[PATCH 15/19] SQUASHME: pnfs-submit: merge pnfs4_commit_done into nfs4_commit_done - part 3
[PATCH 16/19] SQUASHME: pnfs-submit: get rid of pnfs4_commit_done
[PATCH 17/19] SQUASHME: pnfs-submit: merge pnfs4_proc_write_setup into nfs4_proc_write_setup
[PATCH 18/19] SQUASHME: pnfs-submit: merge pnfs4_proc_commit_setup into nfs4_proc_commit_setup
[PATCH 19/19] SQUASHME: pnfs-submit: get rid of pnfs_v4_clientops

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 01/19] SQUASHME: pnfs-submit: merge pnfs4_proc_setattr into nfs4_proc_setattr
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
@ 2010-06-17 14:48 ` Benny Halevy
  2010-06-17 15:00   ` Fred Isaman
  2010-06-17 14:48 ` [PATCH 02/19] SQUASHME: pnfs4_read_done status variable is unused Benny Halevy
                   ` (17 subsequent siblings)
  18 siblings, 1 reply; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:48 UTC (permalink / raw)
  To: linux-nfs

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |   35 +++++++++++++++--------------------
 1 files changed, 15 insertions(+), 20 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 8c02296..17a2597 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -2333,6 +2333,19 @@ static int nfs4_proc_getattr(struct nfs_server *server, struct nfs_fh *fhandle,
 	return err;
 }
 
+static void
+pnfs4_return_layout_on_setattr(struct inode *inode)
+{
+#ifdef CONFIG_NFS_V4_1
+	struct nfs_server *server = NFS_SERVER(inode);
+	struct nfs_inode *nfsi = NFS_I(inode);
+
+	if (pnfs_enabled_sb(server) && has_layout(nfsi) &&
+	    pnfs_ld_layoutret_on_setattr(server->pnfs_curr_ld))
+		pnfs_return_layout(inode, NULL, NULL, RETURN_FILE, true);
+#endif /* CONFIG_NFS_V4_1 */
+}
+
 /* 
  * The file is not closed if it is opened due to the a request to change
  * the size of the file. The open call will not be needed once the
@@ -2359,6 +2372,8 @@ nfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
 	struct nfs4_state *state = NULL;
 	int status;
 
+	pnfs4_return_layout_on_setattr(inode);
+
 	nfs_fattr_init(fattr);
 	
 	/* Search for an existing open(O_WRITE) file */
@@ -2378,25 +2393,6 @@ nfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
 	return status;
 }
 
-#ifdef CONFIG_NFS_V4_1
-/*
- * Return layout before issueing a setattr
- */
-static int
-pnfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
-		    struct iattr *sattr)
-{
-	struct inode *inode = dentry->d_inode;
-	struct nfs_server *server = NFS_SERVER(inode);
-	struct nfs_inode *nfsi = NFS_I(inode);
-
-	if (pnfs_enabled_sb(server) && has_layout(nfsi) &&
-	    pnfs_ld_layoutret_on_setattr(server->pnfs_curr_ld))
-		pnfs_return_layout(inode, NULL, NULL, RETURN_FILE, true);
-	return nfs4_proc_setattr(dentry, fattr, sattr);
-}
-#endif /* CONFIG_NFS_V4_1 */
-
 static int _nfs4_proc_lookupfh(struct nfs_server *server, const struct nfs_fh *dirfh,
 		const struct qstr *name, struct nfs_fh *fhandle,
 		struct nfs_fattr *fattr)
@@ -6068,7 +6064,6 @@ pnfs_v4_clientops_init(void)
 	struct nfs_rpc_ops *p = (struct nfs_rpc_ops *)&pnfs_v4_clientops;
 
 	memcpy(p, &nfs_v4_clientops, sizeof(*p));
-	p->setattr		= pnfs4_proc_setattr;
 	p->read_done		= pnfs4_read_done;
 	p->write_setup		= pnfs4_proc_write_setup;
 	p->write_done		= pnfs4_write_done;
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 02/19] SQUASHME: pnfs4_read_done status variable is unused
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
  2010-06-17 14:48 ` [PATCH 01/19] SQUASHME: pnfs-submit: merge pnfs4_proc_setattr into nfs4_proc_setattr Benny Halevy
@ 2010-06-17 14:48 ` Benny Halevy
  2010-06-17 14:48 ` [PATCH 03/19] SQUASHME: pnfs-submit: optionally pass nfs_client to nfs4_async_handle_error Benny Halevy
                   ` (16 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:48 UTC (permalink / raw)
  To: linux-nfs

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |    3 ---
 1 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 17a2597..8ab30d5 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3166,15 +3166,12 @@ static int pnfs4_read_done(struct rpc_task *task, struct nfs_read_data *data)
 	struct nfs_server *mds_svr = NFS_SERVER(data->inode);
 	struct nfs_client *client = mds_svr->nfs_client;
 	struct nfs4_session *ds_session = NULL;
-	int status;
 
 	dprintk("--> %s\n", __func__);
 
 	if (data->pdata.pnfsflags & PNFS_NO_RPC)
 		return 0;
 
-	status = task->tk_status >= 0 ? 0 : task->tk_status;
-
 	/* Is this a DS session */
 	if (data->fldata.ds_nfs_client) {
 		dprintk("%s DS read\n", __func__);
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 03/19] SQUASHME: pnfs-submit: optionally pass nfs_client to nfs4_async_handle_error
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
  2010-06-17 14:48 ` [PATCH 01/19] SQUASHME: pnfs-submit: merge pnfs4_proc_setattr into nfs4_proc_setattr Benny Halevy
  2010-06-17 14:48 ` [PATCH 02/19] SQUASHME: pnfs4_read_done status variable is unused Benny Halevy
@ 2010-06-17 14:48 ` Benny Halevy
  2010-06-17 14:48 ` [PATCH 04/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 1 Benny Halevy
                   ` (15 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:48 UTC (permalink / raw)
  To: linux-nfs

To overrise the server->client with the data server's nfs client.

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |   22 ++++++----------------
 1 files changed, 6 insertions(+), 16 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 8ab30d5..c4f707f 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -70,7 +70,7 @@ struct nfs4_opendata;
 static int _nfs4_proc_open(struct nfs4_opendata *data);
 static int _nfs4_recover_proc_open(struct nfs4_opendata *data);
 static int nfs4_do_fsinfo(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *);
-static int nfs4_async_handle_error(struct rpc_task *, const struct nfs_server *, struct nfs4_state *, struct nfs4_session *ds_session);
+static int nfs4_async_handle_error(struct rpc_task *, const struct nfs_server *, struct nfs4_state *, struct nfs_client *);
 static int _nfs4_proc_lookup(struct inode *dir, const struct qstr *name, struct nfs_fh *fhandle, struct nfs_fattr *fattr);
 static int _nfs4_proc_getattr(struct nfs_server *server, struct nfs_fh *fhandle, struct nfs_fattr *fattr);
 static int nfs4_do_setattr(struct inode *inode, struct rpc_cred *cred,
@@ -3165,7 +3165,6 @@ static int pnfs4_read_done(struct rpc_task *task, struct nfs_read_data *data)
 {
 	struct nfs_server *mds_svr = NFS_SERVER(data->inode);
 	struct nfs_client *client = mds_svr->nfs_client;
-	struct nfs4_session *ds_session = NULL;
 
 	dprintk("--> %s\n", __func__);
 
@@ -3176,7 +3175,6 @@ static int pnfs4_read_done(struct rpc_task *task, struct nfs_read_data *data)
 	if (data->fldata.ds_nfs_client) {
 		dprintk("%s DS read\n", __func__);
 		client = data->fldata.ds_nfs_client;
-		ds_session = data->fldata.ds_nfs_client->cl_session;
 	}
 
 	nfs41_sequence_done(&data->res.seq_res);
@@ -3187,7 +3185,7 @@ static int pnfs4_read_done(struct rpc_task *task, struct nfs_read_data *data)
 
 	/* FIXME: pass data->args.context->state to nfs4_async_handle_error
 	   like in nfs4_read_done? */
-	if (nfs4_async_handle_error(task, mds_svr, NULL, ds_session) == -EAGAIN) {
+	if (nfs4_async_handle_error(task, mds_svr, NULL, client) == -EAGAIN) {
 		nfs_restart_rpc(task, client);
 		dprintk("<-- %s status= %d\n", __func__, -EAGAIN);
 		return -EAGAIN;
@@ -3209,7 +3207,6 @@ static int pnfs4_write_done(struct rpc_task *task, struct nfs_write_data *data)
 {
 	struct nfs_server *mds_svr = NFS_SERVER(data->inode);
 	struct nfs_client *client = mds_svr->nfs_client;
-	struct nfs4_session *ds_session = NULL;
 
 	/* restore original count after retry? */
 	if (data->pdata.orig_count) {
@@ -3225,7 +3222,6 @@ static int pnfs4_write_done(struct rpc_task *task, struct nfs_write_data *data)
 	if (data->fldata.ds_nfs_client) {
 		dprintk("%s DS write\n", __func__);
 		client = data->fldata.ds_nfs_client;
-		ds_session = client->cl_session;
 	}
 
 	nfs41_sequence_done(&data->res.seq_res);
@@ -3235,7 +3231,7 @@ static int pnfs4_write_done(struct rpc_task *task, struct nfs_write_data *data)
 	*/
 	/* FIXME: pass data->args.context->state to nfs4_async_handle_error
 	   like in nfs4_write_done? */
-	if (nfs4_async_handle_error(task, mds_svr, NULL, ds_session) == -EAGAIN) {
+	if (nfs4_async_handle_error(task, mds_svr, NULL, client) == -EAGAIN) {
 		nfs_restart_rpc(task, client);
 		dprintk("<-- %s status= %d\n", __func__, -EAGAIN);
 		return -EAGAIN;
@@ -3269,7 +3265,6 @@ static int pnfs4_commit_done(struct rpc_task *task, struct nfs_write_data *data)
 {
 	struct nfs_server *mds_svr = NFS_SERVER(data->inode);
 	struct nfs_client *client = mds_svr->nfs_client;
-	struct nfs4_session *ds_session = mds_svr->nfs_client->cl_session;
 
 	dprintk("--> %s task->tk_status %d\n", __func__, task->tk_status);
 
@@ -3284,7 +3279,7 @@ static int pnfs4_commit_done(struct rpc_task *task, struct nfs_write_data *data)
 
 	nfs41_sequence_done(&data->res.seq_res);
 
-	if (nfs4_async_handle_error(task, mds_svr, NULL, ds_session) == -EAGAIN) {
+	if (nfs4_async_handle_error(task, mds_svr, NULL, client) == -EAGAIN) {
 		nfs_restart_rpc(task, client);
 		return -EAGAIN;
 	}
@@ -3698,14 +3693,9 @@ static int nfs4_proc_set_acl(struct inode *inode, const void *buf, size_t buflen
 }
 
 static int
-nfs4_async_handle_error(struct rpc_task *task, const struct nfs_server *server, struct nfs4_state *state, struct nfs4_session *ds_session)
+nfs4_async_handle_error(struct rpc_task *task, const struct nfs_server *server, struct nfs4_state *state, struct nfs_client *clp)
 {
-	struct nfs_client *clp;
-
-	/* Either server or ds_session is set */
-	if (ds_session)
-		clp = ds_session->clp;
-	else
+	if (!clp)
 		clp = server->nfs_client;
 
 	if (task->tk_status >= 0)
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 04/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 1
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (2 preceding siblings ...)
  2010-06-17 14:48 ` [PATCH 03/19] SQUASHME: pnfs-submit: optionally pass nfs_client to nfs4_async_handle_error Benny Halevy
@ 2010-06-17 14:48 ` Benny Halevy
  2010-06-17 15:09   ` Fred Isaman
  2010-06-17 14:49 ` [PATCH 05/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 2 Benny Halevy
                   ` (14 subsequent siblings)
  18 siblings, 1 reply; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:48 UTC (permalink / raw)
  To: linux-nfs

deviding into several patches to assist review

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index c4f707f..a6bebbf 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3144,6 +3144,11 @@ static int nfs4_read_done(struct rpc_task *task, struct nfs_read_data *data)
 
 	dprintk("--> %s\n", __func__);
 
+#ifdef CONFIG_NFS_V4_1
+	if (data->pdata.pnfsflags & PNFS_NO_RPC)
+		return 0;
+#endif /* CONFIG_NFS_V4_1 */
+
 	nfs4_sequence_done(server, &data->res.seq_res, task->tk_status);
 
 	if (nfs4_async_handle_error(task, server, data->args.context->state, NULL) == -EAGAIN) {
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 05/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 2
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (3 preceding siblings ...)
  2010-06-17 14:48 ` [PATCH 04/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 1 Benny Halevy
@ 2010-06-17 14:49 ` Benny Halevy
  2010-06-17 14:49 ` [PATCH 06/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 3 Benny Halevy
                   ` (13 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:49 UTC (permalink / raw)
  To: linux-nfs

Possibly override nfs_client with ds_nfs_client

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index a6bebbf..77b7182 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3141,18 +3141,25 @@ static int nfs4_proc_pathconf(struct nfs_server *server, struct nfs_fh *fhandle,
 static int nfs4_read_done(struct rpc_task *task, struct nfs_read_data *data)
 {
 	struct nfs_server *server = NFS_SERVER(data->inode);
+	struct nfs_client *client = server->nfs_client;
 
 	dprintk("--> %s\n", __func__);
 
 #ifdef CONFIG_NFS_V4_1
 	if (data->pdata.pnfsflags & PNFS_NO_RPC)
 		return 0;
+
+	/* Is this a DS session */
+	if (data->fldata.ds_nfs_client) {
+		dprintk("%s DS read\n", __func__);
+		client = data->fldata.ds_nfs_client;
+	}
 #endif /* CONFIG_NFS_V4_1 */
 
 	nfs4_sequence_done(server, &data->res.seq_res, task->tk_status);
 
-	if (nfs4_async_handle_error(task, server, data->args.context->state, NULL) == -EAGAIN) {
-		nfs_restart_rpc(task, server->nfs_client);
+	if (nfs4_async_handle_error(task, server, data->args.context->state, client) == -EAGAIN) {
+		nfs_restart_rpc(task, client);
 		return -EAGAIN;
 	}
 
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 06/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 3
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (4 preceding siblings ...)
  2010-06-17 14:49 ` [PATCH 05/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 2 Benny Halevy
@ 2010-06-17 14:49 ` Benny Halevy
  2010-06-17 15:15   ` Fred Isaman
  2010-06-17 14:49 ` [PATCH 07/19] SQUASHME: pnfs-submit: get rid of pnfs4_read_done Benny Halevy
                   ` (12 subsequent siblings)
  18 siblings, 1 reply; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:49 UTC (permalink / raw)
  To: linux-nfs

Do not renew the data server lease.

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 77b7182..e8b0f33 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3164,7 +3164,7 @@ static int nfs4_read_done(struct rpc_task *task, struct nfs_read_data *data)
 	}
 
 	nfs_invalidate_atime(data->inode);
-	if (task->tk_status > 0)
+	if (task->tk_status > 0 && client == server->nfs_client)
 		renew_lease(server, data->timestamp);
 	return 0;
 }
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 07/19] SQUASHME: pnfs-submit: get rid of pnfs4_read_done
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (5 preceding siblings ...)
  2010-06-17 14:49 ` [PATCH 06/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 3 Benny Halevy
@ 2010-06-17 14:49 ` Benny Halevy
  2010-06-17 14:49 ` [PATCH 08/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 1 Benny Halevy
                   ` (11 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:49 UTC (permalink / raw)
  To: linux-nfs

Now that its funcitonality if fully merged into nfs4_read_done

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |   43 -------------------------------------------
 1 files changed, 0 insertions(+), 43 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index e8b0f33..6a0ab6c 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3171,48 +3171,6 @@ static int nfs4_read_done(struct rpc_task *task, struct nfs_read_data *data)
 
 #ifdef CONFIG_NFS_V4_1
 /*
- * rpc_call_done callback for a read to the MDS or to a filelayout Data Server
- */
-static int pnfs4_read_done(struct rpc_task *task, struct nfs_read_data *data)
-{
-	struct nfs_server *mds_svr = NFS_SERVER(data->inode);
-	struct nfs_client *client = mds_svr->nfs_client;
-
-	dprintk("--> %s\n", __func__);
-
-	if (data->pdata.pnfsflags & PNFS_NO_RPC)
-		return 0;
-
-	/* Is this a DS session */
-	if (data->fldata.ds_nfs_client) {
-		dprintk("%s DS read\n", __func__);
-		client = data->fldata.ds_nfs_client;
-	}
-
-	nfs41_sequence_done(&data->res.seq_res);
-
-	/*
-	 * Handle async errors for both data servers and MDS communication.
-	 */
-
-	/* FIXME: pass data->args.context->state to nfs4_async_handle_error
-	   like in nfs4_read_done? */
-	if (nfs4_async_handle_error(task, mds_svr, NULL, client) == -EAGAIN) {
-		nfs_restart_rpc(task, client);
-		dprintk("<-- %s status= %d\n", __func__, -EAGAIN);
-		return -EAGAIN;
-	}
-
-	/* Only renew lease if this was a read call to MDS */
-	if (task->tk_status > 0 && !data->fldata.ds_nfs_client)
-		renew_lease(mds_svr, data->timestamp);
-
-	dprintk("<-- %s\n", __func__);
-
-	return 0;
-}
-
-/*
  * rpc_call_done callback for a write to the MDS or to a filelayout Data Server
  */
 static int pnfs4_write_done(struct rpc_task *task, struct nfs_write_data *data)
@@ -6063,7 +6021,6 @@ pnfs_v4_clientops_init(void)
 	struct nfs_rpc_ops *p = (struct nfs_rpc_ops *)&pnfs_v4_clientops;
 
 	memcpy(p, &nfs_v4_clientops, sizeof(*p));
-	p->read_done		= pnfs4_read_done;
 	p->write_setup		= pnfs4_proc_write_setup;
 	p->write_done		= pnfs4_write_done;
 	p->commit_setup		= pnfs4_proc_commit_setup;
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 08/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 1
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (6 preceding siblings ...)
  2010-06-17 14:49 ` [PATCH 07/19] SQUASHME: pnfs-submit: get rid of pnfs4_read_done Benny Halevy
@ 2010-06-17 14:49 ` Benny Halevy
  2010-06-17 14:49 ` [PATCH 09/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 2 Benny Halevy
                   ` (10 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:49 UTC (permalink / raw)
  To: linux-nfs

restore original count after retry.

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 6a0ab6c..5948de5 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3271,7 +3271,16 @@ static void nfs4_proc_read_setup(struct nfs_read_data *data, struct rpc_message
 static int nfs4_write_done(struct rpc_task *task, struct nfs_write_data *data)
 {
 	struct inode *inode = data->inode;
-	
+
+#ifdef CONFIG_NFS_V4_1
+	/* restore original count after retry? */
+	if (data->pdata.orig_count) {
+		dprintk("%s: restoring original count %u\n", __func__,
+			data->pdata.orig_count);
+		data->args.count = data->pdata.orig_count;
+	}
+#endif /* CONFIG_NFS_V4_1 */
+
 	nfs4_sequence_done(NFS_SERVER(inode), &data->res.seq_res,
 			   task->tk_status);
 
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 09/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 2
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (7 preceding siblings ...)
  2010-06-17 14:49 ` [PATCH 08/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 1 Benny Halevy
@ 2010-06-17 14:49 ` Benny Halevy
  2010-06-17 15:19   ` Fred Isaman
  2010-06-17 14:49 ` [PATCH 10/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 3 Benny Halevy
                   ` (9 subsequent siblings)
  18 siblings, 1 reply; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:49 UTC (permalink / raw)
  To: linux-nfs

PNFS_NO_RPC.

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 5948de5..fd2b588 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3279,6 +3279,9 @@ static int nfs4_write_done(struct rpc_task *task, struct nfs_write_data *data)
 			data->pdata.orig_count);
 		data->args.count = data->pdata.orig_count;
 	}
+
+	if (data->pdata.pnfsflags & PNFS_NO_RPC)
+		return 0;
 #endif /* CONFIG_NFS_V4_1 */
 
 	nfs4_sequence_done(NFS_SERVER(inode), &data->res.seq_res,
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 10/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 3
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (8 preceding siblings ...)
  2010-06-17 14:49 ` [PATCH 09/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 2 Benny Halevy
@ 2010-06-17 14:49 ` Benny Halevy
  2010-06-17 14:50 ` [PATCH 11/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 4 Benny Halevy
                   ` (8 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:49 UTC (permalink / raw)
  To: linux-nfs

Possibly override data server nfs_client.

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index fd2b588..60898f6 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3271,6 +3271,8 @@ static void nfs4_proc_read_setup(struct nfs_read_data *data, struct rpc_message
 static int nfs4_write_done(struct rpc_task *task, struct nfs_write_data *data)
 {
 	struct inode *inode = data->inode;
+	struct nfs_server *server = NFS_SERVER(inode);
+	struct nfs_client *client = server->nfs_client;
 
 #ifdef CONFIG_NFS_V4_1
 	/* restore original count after retry? */
@@ -3282,17 +3284,23 @@ static int nfs4_write_done(struct rpc_task *task, struct nfs_write_data *data)
 
 	if (data->pdata.pnfsflags & PNFS_NO_RPC)
 		return 0;
+
+	/* Is this a DS session */
+	if (data->fldata.ds_nfs_client) {
+		dprintk("%s DS write\n", __func__);
+		client = data->fldata.ds_nfs_client;
+	}
 #endif /* CONFIG_NFS_V4_1 */
 
-	nfs4_sequence_done(NFS_SERVER(inode), &data->res.seq_res,
+	nfs4_sequence_done(server, &data->res.seq_res,
 			   task->tk_status);
 
-	if (nfs4_async_handle_error(task, NFS_SERVER(inode), data->args.context->state, NULL) == -EAGAIN) {
-		nfs_restart_rpc(task, NFS_SERVER(inode)->nfs_client);
+	if (nfs4_async_handle_error(task, server, data->args.context->state, client) == -EAGAIN) {
+		nfs_restart_rpc(task, client);
 		return -EAGAIN;
 	}
 	if (task->tk_status >= 0) {
-		renew_lease(NFS_SERVER(inode), data->timestamp);
+		renew_lease(server, data->timestamp);
 		nfs_post_op_update_inode_force_wcc(inode, data->res.fattr);
 	}
 	return 0;
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 11/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 4
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (9 preceding siblings ...)
  2010-06-17 14:49 ` [PATCH 10/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 3 Benny Halevy
@ 2010-06-17 14:50 ` Benny Halevy
  2010-06-17 14:50 ` [PATCH 12/19] SQUASHME: pnfs-submit: get rid of pnfs4_write_done Benny Halevy
                   ` (7 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:50 UTC (permalink / raw)
  To: linux-nfs

Renew lease only for MDS writes.
Update last byte written and mark for layoutcommit for DS writes.

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |   20 ++++++++++++++++++--
 1 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 60898f6..7b501ec 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3268,6 +3268,14 @@ static void nfs4_proc_read_setup(struct nfs_read_data *data, struct rpc_message
 	msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_READ];
 }
 
+static void pnfs4_update_write_done(struct nfs_inode *nfsi, struct nfs_write_data *data)
+{
+#ifdef CONFIG_NFS_V4_1
+	pnfs_update_last_write(nfsi, data->args.offset, data->res.count);
+	pnfs_need_layoutcommit(nfsi, data->args.context);
+#endif /* CONFIG_NFS_V4_1 */
+}
+
 static int nfs4_write_done(struct rpc_task *task, struct nfs_write_data *data)
 {
 	struct inode *inode = data->inode;
@@ -3299,9 +3307,17 @@ static int nfs4_write_done(struct rpc_task *task, struct nfs_write_data *data)
 		nfs_restart_rpc(task, client);
 		return -EAGAIN;
 	}
+
+	/*
+	 * MDS write: renew lease
+	 * DS write: update lastbyte written, mark for layout commit
+	 */
 	if (task->tk_status >= 0) {
-		renew_lease(server, data->timestamp);
-		nfs_post_op_update_inode_force_wcc(inode, data->res.fattr);
+		if (client == server->nfs_client) {
+			renew_lease(server, data->timestamp);
+			nfs_post_op_update_inode_force_wcc(inode, data->res.fattr);
+		} else
+			pnfs4_update_write_done(NFS_I(inode), data);
 	}
 	return 0;
 }
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 12/19] SQUASHME: pnfs-submit: get rid of pnfs4_write_done
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (10 preceding siblings ...)
  2010-06-17 14:50 ` [PATCH 11/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 4 Benny Halevy
@ 2010-06-17 14:50 ` Benny Halevy
  2010-06-17 14:50 ` [PATCH 13/19] SQUASHME: pnfs-submit: merge pnfs4_commit_done into nfs4_commit_done - part 1 Benny Halevy
                   ` (6 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:50 UTC (permalink / raw)
  To: linux-nfs

Now that it's fully merged into nfs4_write_done

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |   59 -----------------------------------------------------
 1 files changed, 0 insertions(+), 59 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 7b501ec..5c1e680 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3171,64 +3171,6 @@ static int nfs4_read_done(struct rpc_task *task, struct nfs_read_data *data)
 
 #ifdef CONFIG_NFS_V4_1
 /*
- * rpc_call_done callback for a write to the MDS or to a filelayout Data Server
- */
-static int pnfs4_write_done(struct rpc_task *task, struct nfs_write_data *data)
-{
-	struct nfs_server *mds_svr = NFS_SERVER(data->inode);
-	struct nfs_client *client = mds_svr->nfs_client;
-
-	/* restore original count after retry? */
-	if (data->pdata.orig_count) {
-		dprintk("%s: restoring original count %u\n", __func__,
-			data->pdata.orig_count);
-		data->args.count = data->pdata.orig_count;
-	}
-
-	if (data->pdata.pnfsflags & PNFS_NO_RPC)
-		return 0;
-
-	/* Is this a DS session */
-	if (data->fldata.ds_nfs_client) {
-		dprintk("%s DS write\n", __func__);
-		client = data->fldata.ds_nfs_client;
-	}
-
-	nfs41_sequence_done(&data->res.seq_res);
-
-	/*
-	* Handle async errors for both data servers and MDS communication.
-	*/
-	/* FIXME: pass data->args.context->state to nfs4_async_handle_error
-	   like in nfs4_write_done? */
-	if (nfs4_async_handle_error(task, mds_svr, NULL, client) == -EAGAIN) {
-		nfs_restart_rpc(task, client);
-		dprintk("<-- %s status= %d\n", __func__, -EAGAIN);
-		return -EAGAIN;
-	}
-
-	/*
-	 * MDS write: renew lease
-	 * DS write: update lastbyte written
-	 */
-	if (task->tk_status > 0) {
-		if (!data->fldata.ds_nfs_client) {
-			nfs_post_op_update_inode_force_wcc(data->inode,
-							data->res.fattr);
-			renew_lease(mds_svr, data->timestamp);
-		} else {
-			pnfs_update_last_write(NFS_I(data->inode),
-					       data->args.offset,
-					       data->res.count);
-			/* Mark for LAYOUTCOMMIT */
-			pnfs_need_layoutcommit(NFS_I(data->inode),
-					       data->args.context);
-		}
-	}
-	return 0;
-}
-
-/*
  * rpc_call_done callback for a commit to the MDS or to a filelayout Data Server
  */
 static int pnfs4_commit_done(struct rpc_task *task, struct nfs_write_data *data)
@@ -6058,7 +6000,6 @@ pnfs_v4_clientops_init(void)
 
 	memcpy(p, &nfs_v4_clientops, sizeof(*p));
 	p->write_setup		= pnfs4_proc_write_setup;
-	p->write_done		= pnfs4_write_done;
 	p->commit_setup		= pnfs4_proc_commit_setup;
 	p->commit_done		= pnfs4_commit_done;
 }
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 13/19] SQUASHME: pnfs-submit: merge pnfs4_commit_done into nfs4_commit_done - part 1
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (11 preceding siblings ...)
  2010-06-17 14:50 ` [PATCH 12/19] SQUASHME: pnfs-submit: get rid of pnfs4_write_done Benny Halevy
@ 2010-06-17 14:50 ` Benny Halevy
  2010-06-17 14:50 ` [PATCH 14/19] SQUASHME: pnfs-submit: merge pnfs4_commit_done into nfs4_commit_done - part 2 Benny Halevy
                   ` (5 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:50 UTC (permalink / raw)
  To: linux-nfs

PNFS_NO_RPC

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 5c1e680..8b88cf2 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3279,6 +3279,11 @@ static int nfs4_commit_done(struct rpc_task *task, struct nfs_write_data *data)
 {
 	struct inode *inode = data->inode;
 	
+#ifdef CONFIG_NFS_V4_1
+	if (data->pdata.pnfsflags & PNFS_NO_RPC)
+		return 0;
+#endif /* CONFIG_NFS_V4_1 */
+
 	nfs4_sequence_done(NFS_SERVER(inode), &data->res.seq_res,
 			   task->tk_status);
 	if (nfs4_async_handle_error(task, NFS_SERVER(inode), NULL, NULL) == -EAGAIN) {
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 14/19] SQUASHME: pnfs-submit: merge pnfs4_commit_done into nfs4_commit_done - part 2
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (12 preceding siblings ...)
  2010-06-17 14:50 ` [PATCH 13/19] SQUASHME: pnfs-submit: merge pnfs4_commit_done into nfs4_commit_done - part 1 Benny Halevy
@ 2010-06-17 14:50 ` Benny Halevy
  2010-06-17 14:50 ` [PATCH 15/19] SQUASHME: pnfs-submit: merge pnfs4_commit_done into nfs4_commit_done - part 3 Benny Halevy
                   ` (4 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:50 UTC (permalink / raw)
  To: linux-nfs

Possibly override nfs_client with data server's.

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 8b88cf2..2782900 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3278,16 +3278,24 @@ static void nfs4_proc_write_setup(struct nfs_write_data *data, struct rpc_messag
 static int nfs4_commit_done(struct rpc_task *task, struct nfs_write_data *data)
 {
 	struct inode *inode = data->inode;
+	struct nfs_server *server = NFS_SERVER(data->inode);
+	struct nfs_client *client = server->nfs_client;
 	
 #ifdef CONFIG_NFS_V4_1
 	if (data->pdata.pnfsflags & PNFS_NO_RPC)
 		return 0;
+
+	/* Is this a DS session */
+	if (data->fldata.ds_nfs_client) {
+		dprintk("%s DS commit\n", __func__);
+		client = data->fldata.ds_nfs_client;
+	}
 #endif /* CONFIG_NFS_V4_1 */
 
-	nfs4_sequence_done(NFS_SERVER(inode), &data->res.seq_res,
+	nfs4_sequence_done(server, &data->res.seq_res,
 			   task->tk_status);
-	if (nfs4_async_handle_error(task, NFS_SERVER(inode), NULL, NULL) == -EAGAIN) {
-		nfs_restart_rpc(task, NFS_SERVER(inode)->nfs_client);
+	if (nfs4_async_handle_error(task, server, NULL, client) == -EAGAIN) {
+		nfs_restart_rpc(task, client);
 		return -EAGAIN;
 	}
 	nfs_refresh_inode(inode, data->res.fattr);
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 15/19] SQUASHME: pnfs-submit: merge pnfs4_commit_done into nfs4_commit_done - part 3
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (13 preceding siblings ...)
  2010-06-17 14:50 ` [PATCH 14/19] SQUASHME: pnfs-submit: merge pnfs4_commit_done into nfs4_commit_done - part 2 Benny Halevy
@ 2010-06-17 14:50 ` Benny Halevy
  2010-06-17 14:51 ` [PATCH 16/19] SQUASHME: pnfs-submit: get rid of pnfs4_commit_done Benny Halevy
                   ` (3 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:50 UTC (permalink / raw)
  To: linux-nfs

nfs_refresh_inode only for MDS commits.

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 2782900..95de256 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3298,7 +3298,8 @@ static int nfs4_commit_done(struct rpc_task *task, struct nfs_write_data *data)
 		nfs_restart_rpc(task, client);
 		return -EAGAIN;
 	}
-	nfs_refresh_inode(inode, data->res.fattr);
+	if (client == server->nfs_client)
+		nfs_refresh_inode(inode, data->res.fattr);
 	return 0;
 }
 
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 16/19] SQUASHME: pnfs-submit: get rid of pnfs4_commit_done
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (14 preceding siblings ...)
  2010-06-17 14:50 ` [PATCH 15/19] SQUASHME: pnfs-submit: merge pnfs4_commit_done into nfs4_commit_done - part 3 Benny Halevy
@ 2010-06-17 14:51 ` Benny Halevy
  2010-06-17 14:51 ` [PATCH 17/19] SQUASHME: pnfs-submit: merge pnfs4_proc_write_setup into nfs4_proc_write_setup Benny Halevy
                   ` (2 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:51 UTC (permalink / raw)
  To: linux-nfs

Now that it's fully merged into nfs4_commit_done

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |   36 ------------------------------------
 1 files changed, 0 insertions(+), 36 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 95de256..3d15d34 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3169,41 +3169,6 @@ static int nfs4_read_done(struct rpc_task *task, struct nfs_read_data *data)
 	return 0;
 }
 
-#ifdef CONFIG_NFS_V4_1
-/*
- * rpc_call_done callback for a commit to the MDS or to a filelayout Data Server
- */
-static int pnfs4_commit_done(struct rpc_task *task, struct nfs_write_data *data)
-{
-	struct nfs_server *mds_svr = NFS_SERVER(data->inode);
-	struct nfs_client *client = mds_svr->nfs_client;
-
-	dprintk("--> %s task->tk_status %d\n", __func__, task->tk_status);
-
-	if (data->pdata.pnfsflags & PNFS_NO_RPC)
-		return 0;
-
-	/* Is this a DS session */
-	if (data->fldata.ds_nfs_client) {
-		dprintk("%s DS commit\n", __func__);
-		client = data->fldata.ds_nfs_client;
-	}
-
-	nfs41_sequence_done(&data->res.seq_res);
-
-	if (nfs4_async_handle_error(task, mds_svr, NULL, client) == -EAGAIN) {
-		nfs_restart_rpc(task, client);
-		return -EAGAIN;
-	}
-
-	/* Update inode if commit to MDS */
-	if (task->tk_status >= 0 && !data->fldata.ds_nfs_client)
-		nfs_refresh_inode(data->inode, data->res.fattr);
-	dprintk("<-- %s\n", __func__);
-	return 0;
-}
-#endif /* CONFIG_NFS_V4_1 */
-
 static void nfs4_proc_read_setup(struct nfs_read_data *data, struct rpc_message *msg)
 {
 	data->timestamp   = jiffies;
@@ -6015,7 +5980,6 @@ pnfs_v4_clientops_init(void)
 	memcpy(p, &nfs_v4_clientops, sizeof(*p));
 	p->write_setup		= pnfs4_proc_write_setup;
 	p->commit_setup		= pnfs4_proc_commit_setup;
-	p->commit_done		= pnfs4_commit_done;
 }
 #endif /* CONFIG_NFS_V4_1 */
 
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 17/19] SQUASHME: pnfs-submit: merge pnfs4_proc_write_setup into nfs4_proc_write_setup
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (15 preceding siblings ...)
  2010-06-17 14:51 ` [PATCH 16/19] SQUASHME: pnfs-submit: get rid of pnfs4_commit_done Benny Halevy
@ 2010-06-17 14:51 ` Benny Halevy
  2010-06-17 14:51 ` [PATCH 18/19] SQUASHME: pnfs-submit: merge pnfs4_proc_commit_setup into nfs4_proc_commit_setup Benny Halevy
  2010-06-17 14:51 ` [PATCH 19/19] SQUASHME: pnfs-submit: get rid of pnfs_v4_clientops Benny Halevy
  18 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:51 UTC (permalink / raw)
  To: linux-nfs

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |   30 +++++++-----------------------
 1 files changed, 7 insertions(+), 23 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 3d15d34..667d525 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3237,6 +3237,13 @@ static void nfs4_proc_write_setup(struct nfs_write_data *data, struct rpc_messag
 	data->res.server = server;
 	data->timestamp   = jiffies;
 
+#ifdef CONFIG_NFS_V4_1
+	/* writes to DS use pnfs vector */
+	if (data->fldata.ds_nfs_client) {
+		msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_PNFS_WRITE];
+		return;
+	}
+#endif /* CONFIG_NFS_V4_1 */
 	msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_WRITE];
 }
 
@@ -3296,28 +3303,6 @@ pnfs4_proc_commit_setup(struct nfs_write_data *data, struct rpc_message *msg)
 	data->res.server = server;
 	msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_PNFS_COMMIT];
 }
-
-/*
- * pNFS does not send a getattr on write.
- */
-static void pnfs4_proc_write_setup(struct nfs_write_data *data,
-				   struct rpc_message *msg)
-{
-	struct nfs_server *server = NFS_SERVER(data->inode);
-
-	dprintk("--> %s ds_nfs_client %p\n", __func__,
-		data->fldata.ds_nfs_client);
-
-	/* writes to MDS use non-pnfs vector */
-	if (!data->fldata.ds_nfs_client)
-		return nfs4_proc_write_setup(data, msg);
-
-	data->args.bitmask = server->attr_bitmask;
-	data->res.server = server;
-	data->timestamp   = jiffies;
-
-	msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_PNFS_WRITE];
-}
 #endif /* CONFIG_NFS_V4_1 */
 
 struct nfs4_renewdata {
@@ -5978,7 +5963,6 @@ pnfs_v4_clientops_init(void)
 	struct nfs_rpc_ops *p = (struct nfs_rpc_ops *)&pnfs_v4_clientops;
 
 	memcpy(p, &nfs_v4_clientops, sizeof(*p));
-	p->write_setup		= pnfs4_proc_write_setup;
 	p->commit_setup		= pnfs4_proc_commit_setup;
 }
 #endif /* CONFIG_NFS_V4_1 */
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 18/19] SQUASHME: pnfs-submit: merge pnfs4_proc_commit_setup into nfs4_proc_commit_setup
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (16 preceding siblings ...)
  2010-06-17 14:51 ` [PATCH 17/19] SQUASHME: pnfs-submit: merge pnfs4_proc_write_setup into nfs4_proc_write_setup Benny Halevy
@ 2010-06-17 14:51 ` Benny Halevy
  2010-06-17 14:51 ` [PATCH 19/19] SQUASHME: pnfs-submit: get rid of pnfs_v4_clientops Benny Halevy
  18 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:51 UTC (permalink / raw)
  To: linux-nfs

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/nfs4proc.c |   28 ++++++----------------------
 1 files changed, 6 insertions(+), 22 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 667d525..915e7cb 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3281,29 +3281,14 @@ static void nfs4_proc_commit_setup(struct nfs_write_data *data, struct rpc_messa
 	
 	data->args.bitmask = server->cache_consistency_bitmask;
 	data->res.server = server;
-	msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_COMMIT];
-}
-
 #if defined(CONFIG_NFS_V4_1)
-/*
- * pNFS doew not send a getattr to Data Servers on commit.
- */
-static void
-pnfs4_proc_commit_setup(struct nfs_write_data *data, struct rpc_message *msg)
-{
-	struct nfs_server *server = NFS_SERVER(data->inode);
-
-	dprintk("--> %s ds_nfs_client %p\n", __func__,
-		data->fldata.ds_nfs_client);
-
-	if (!data->fldata.ds_nfs_client)
-		return nfs4_proc_commit_setup(data, msg);
-
-	data->args.bitmask = server->attr_bitmask;
-	data->res.server = server;
-	msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_PNFS_COMMIT];
-}
+	if (data->fldata.ds_nfs_client) {
+		msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_PNFS_COMMIT];
+		return;
+	}
 #endif /* CONFIG_NFS_V4_1 */
+	msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_COMMIT];
+}
 
 struct nfs4_renewdata {
 	struct nfs_client	*client;
@@ -5963,7 +5948,6 @@ pnfs_v4_clientops_init(void)
 	struct nfs_rpc_ops *p = (struct nfs_rpc_ops *)&pnfs_v4_clientops;
 
 	memcpy(p, &nfs_v4_clientops, sizeof(*p));
-	p->commit_setup		= pnfs4_proc_commit_setup;
 }
 #endif /* CONFIG_NFS_V4_1 */
 
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 19/19] SQUASHME: pnfs-submit: get rid of pnfs_v4_clientops
  2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
                   ` (17 preceding siblings ...)
  2010-06-17 14:51 ` [PATCH 18/19] SQUASHME: pnfs-submit: merge pnfs4_proc_commit_setup into nfs4_proc_commit_setup Benny Halevy
@ 2010-06-17 14:51 ` Benny Halevy
  18 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 14:51 UTC (permalink / raw)
  To: linux-nfs

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/internal.h |    4 ----
 fs/nfs/nfs4proc.c |   12 ------------
 fs/nfs/pnfs.c     |    7 -------
 3 files changed, 0 insertions(+), 23 deletions(-)

diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h
index a30974a..e5f6f16 100644
--- a/fs/nfs/internal.h
+++ b/fs/nfs/internal.h
@@ -211,10 +211,6 @@ extern const u32 nfs41_maxwrite_overhead;
 extern struct rpc_procinfo nfs4_procedures[];
 #endif
 
-#ifdef CONFIG_NFS_V4_1
-extern void pnfs_v4_clientops_init(void);
-#endif /* CONFIG_NFS_V4_1 */
-
 extern int nfs4_recover_expired_lease(struct nfs_client *clp);
 
 /* proc.c */
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 915e7cb..8109692 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -5939,18 +5939,6 @@ const struct nfs_rpc_ops nfs_v4_clientops = {
 	.close_context  = nfs4_close_context,
 };
 
-#if defined(CONFIG_NFS_V4_1)
-const struct nfs_rpc_ops pnfs_v4_clientops;
-
-void
-pnfs_v4_clientops_init(void)
-{
-	struct nfs_rpc_ops *p = (struct nfs_rpc_ops *)&pnfs_v4_clientops;
-
-	memcpy(p, &nfs_v4_clientops, sizeof(*p));
-}
-#endif /* CONFIG_NFS_V4_1 */
-
 /*
  * Local variables:
  *  c-basic-offset: 8
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index 414b7dc..6dd454c 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -118,8 +118,6 @@ pnfs_initialize(void)
 		return -ENOMEM;
 	}
 
-	pnfs_v4_clientops_init();
-
 	pnfs_initialized = 1;
 	return 0;
 }
@@ -229,11 +227,6 @@ set_pnfs_layoutdriver(struct nfs_server *server, const struct nfs_fh *mntfh,
 			       "for layout driver %u. ", __func__, id);
 			goto out_err;
 		}
-		/*
-		 * Layout driver succeeded in initializing mountpoint
-		 * and has taken a reference on the nfs_client cl_devid_cache
-		 */
-		server->nfs_client->rpc_ops = &pnfs_v4_clientops;
 		dprintk("%s: pNFS module for %u set\n", __func__, id);
 		return;
 	}
-- 
1.6.4.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* Re: [PATCH 01/19] SQUASHME: pnfs-submit: merge pnfs4_proc_setattr into nfs4_proc_setattr
  2010-06-17 14:48 ` [PATCH 01/19] SQUASHME: pnfs-submit: merge pnfs4_proc_setattr into nfs4_proc_setattr Benny Halevy
@ 2010-06-17 15:00   ` Fred Isaman
       [not found]     ` <AANLkTika4BAGrDg0CnUPRy9Qji6rThr5zcZ0S8ciAr29-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 27+ messages in thread
From: Fred Isaman @ 2010-06-17 15:00 UTC (permalink / raw)
  To: Benny Halevy; +Cc: linux-nfs

On Thu, Jun 17, 2010 at 10:48 AM, Benny Halevy <bhalevy@panasas.com> wr=
ote:
> Signed-off-by: Benny Halevy <bhalevy@panasas.com>
> ---
> =A0fs/nfs/nfs4proc.c | =A0 35 +++++++++++++++--------------------
> =A01 files changed, 15 insertions(+), 20 deletions(-)
>
> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
> index 8c02296..17a2597 100644
> --- a/fs/nfs/nfs4proc.c
> +++ b/fs/nfs/nfs4proc.c
> @@ -2333,6 +2333,19 @@ static int nfs4_proc_getattr(struct nfs_server=
 *server, struct nfs_fh *fhandle,
> =A0 =A0 =A0 =A0return err;
> =A0}
>
> +static void
> +pnfs4_return_layout_on_setattr(struct inode *inode)
> +{
> +#ifdef CONFIG_NFS_V4_1
> + =A0 =A0 =A0 struct nfs_server *server =3D NFS_SERVER(inode);
> + =A0 =A0 =A0 struct nfs_inode *nfsi =3D NFS_I(inode);
> +
> + =A0 =A0 =A0 if (pnfs_enabled_sb(server) && has_layout(nfsi) &&

pnfs_enabled_sb() is not needed given the following has_layout() test.

=46red

> + =A0 =A0 =A0 =A0 =A0 pnfs_ld_layoutret_on_setattr(server->pnfs_curr_=
ld))
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 pnfs_return_layout(inode, NULL, NULL, R=
ETURN_FILE, true);
> +#endif /* CONFIG_NFS_V4_1 */
> +}
> +
> =A0/*
> =A0* The file is not closed if it is opened due to the a request to c=
hange
> =A0* the size of the file. The open call will not be needed once the
> @@ -2359,6 +2372,8 @@ nfs4_proc_setattr(struct dentry *dentry, struct=
 nfs_fattr *fattr,
> =A0 =A0 =A0 =A0struct nfs4_state *state =3D NULL;
> =A0 =A0 =A0 =A0int status;
>
> + =A0 =A0 =A0 pnfs4_return_layout_on_setattr(inode);
> +
> =A0 =A0 =A0 =A0nfs_fattr_init(fattr);
>
> =A0 =A0 =A0 =A0/* Search for an existing open(O_WRITE) file */
> @@ -2378,25 +2393,6 @@ nfs4_proc_setattr(struct dentry *dentry, struc=
t nfs_fattr *fattr,
> =A0 =A0 =A0 =A0return status;
> =A0}
>
> -#ifdef CONFIG_NFS_V4_1
> -/*
> - * Return layout before issueing a setattr
> - */
> -static int
> -pnfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 struct iattr *sattr)
> -{
> - =A0 =A0 =A0 struct inode *inode =3D dentry->d_inode;
> - =A0 =A0 =A0 struct nfs_server *server =3D NFS_SERVER(inode);
> - =A0 =A0 =A0 struct nfs_inode *nfsi =3D NFS_I(inode);
> -
> - =A0 =A0 =A0 if (pnfs_enabled_sb(server) && has_layout(nfsi) &&
> - =A0 =A0 =A0 =A0 =A0 pnfs_ld_layoutret_on_setattr(server->pnfs_curr_=
ld))
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 pnfs_return_layout(inode, NULL, NULL, R=
ETURN_FILE, true);
> - =A0 =A0 =A0 return nfs4_proc_setattr(dentry, fattr, sattr);
> -}
> -#endif /* CONFIG_NFS_V4_1 */
> -
> =A0static int _nfs4_proc_lookupfh(struct nfs_server *server, const st=
ruct nfs_fh *dirfh,
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0const struct qstr *name, struct nfs_fh=
 *fhandle,
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0struct nfs_fattr *fattr)
> @@ -6068,7 +6064,6 @@ pnfs_v4_clientops_init(void)
> =A0 =A0 =A0 =A0struct nfs_rpc_ops *p =3D (struct nfs_rpc_ops *)&pnfs_=
v4_clientops;
>
> =A0 =A0 =A0 =A0memcpy(p, &nfs_v4_clientops, sizeof(*p));
> - =A0 =A0 =A0 p->setattr =A0 =A0 =A0 =A0 =A0 =A0 =A0=3D pnfs4_proc_se=
tattr;
> =A0 =A0 =A0 =A0p->read_done =A0 =A0 =A0 =A0 =A0 =A0=3D pnfs4_read_don=
e;
> =A0 =A0 =A0 =A0p->write_setup =A0 =A0 =A0 =A0 =A0=3D pnfs4_proc_write=
_setup;
> =A0 =A0 =A0 =A0p->write_done =A0 =A0 =A0 =A0 =A0 =3D pnfs4_write_done=
;
> --
> 1.6.4.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" =
in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at =A0http://vger.kernel.org/majordomo-info.html
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 04/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 1
  2010-06-17 14:48 ` [PATCH 04/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 1 Benny Halevy
@ 2010-06-17 15:09   ` Fred Isaman
  0 siblings, 0 replies; 27+ messages in thread
From: Fred Isaman @ 2010-06-17 15:09 UTC (permalink / raw)
  To: Benny Halevy; +Cc: linux-nfs

On Thu, Jun 17, 2010 at 10:48 AM, Benny Halevy <bhalevy@panasas.com> wr=
ote:
> deviding into several patches to assist review
>
> Signed-off-by: Benny Halevy <bhalevy@panasas.com>
> ---
> =A0fs/nfs/nfs4proc.c | =A0 =A05 +++++
> =A01 files changed, 5 insertions(+), 0 deletions(-)
>
> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
> index c4f707f..a6bebbf 100644
> --- a/fs/nfs/nfs4proc.c
> +++ b/fs/nfs/nfs4proc.c
> @@ -3144,6 +3144,11 @@ static int nfs4_read_done(struct rpc_task *tas=
k, struct nfs_read_data *data)
>
> =A0 =A0 =A0 =A0dprintk("--> %s\n", __func__);
>
> +#ifdef CONFIG_NFS_V4_1
> + =A0 =A0 =A0 if (data->pdata.pnfsflags & PNFS_NO_RPC)
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 return 0;
> +#endif /* CONFIG_NFS_V4_1 */
> +

This shouldn't be in pnfs_submit (PFNS_NO_RPC doesn't exist there anymo=
re)

=46red

> =A0 =A0 =A0 =A0nfs4_sequence_done(server, &data->res.seq_res, task->t=
k_status);
>
> =A0 =A0 =A0 =A0if (nfs4_async_handle_error(task, server, data->args.c=
ontext->state, NULL) =3D=3D -EAGAIN) {
> --
> 1.6.4.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" =
in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at =A0http://vger.kernel.org/majordomo-info.html
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 01/19] SQUASHME: pnfs-submit: merge pnfs4_proc_setattr into nfs4_proc_setattr
       [not found]     ` <AANLkTika4BAGrDg0CnUPRy9Qji6rThr5zcZ0S8ciAr29-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2010-06-17 15:12       ` Benny Halevy
  0 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 15:12 UTC (permalink / raw)
  To: Fred Isaman; +Cc: linux-nfs

On Jun. 17, 2010, 11:00 -0400, Fred Isaman <iisaman@umich.edu> wrote:
> On Thu, Jun 17, 2010 at 10:48 AM, Benny Halevy <bhalevy@panasas.com> wrote:
>> Signed-off-by: Benny Halevy <bhalevy@panasas.com>
>> ---
>>  fs/nfs/nfs4proc.c |   35 +++++++++++++++--------------------
>>  1 files changed, 15 insertions(+), 20 deletions(-)
>>
>> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
>> index 8c02296..17a2597 100644
>> --- a/fs/nfs/nfs4proc.c
>> +++ b/fs/nfs/nfs4proc.c
>> @@ -2333,6 +2333,19 @@ static int nfs4_proc_getattr(struct nfs_server *server, struct nfs_fh *fhandle,
>>        return err;
>>  }
>>
>> +static void
>> +pnfs4_return_layout_on_setattr(struct inode *inode)
>> +{
>> +#ifdef CONFIG_NFS_V4_1
>> +       struct nfs_server *server = NFS_SERVER(inode);
>> +       struct nfs_inode *nfsi = NFS_I(inode);
>> +
>> +       if (pnfs_enabled_sb(server) && has_layout(nfsi) &&
> 
> pnfs_enabled_sb() is not needed given the following has_layout() test.
> 

Good point. I'll remove it.

Benny

> Fred
> 
>> +           pnfs_ld_layoutret_on_setattr(server->pnfs_curr_ld))
>> +               pnfs_return_layout(inode, NULL, NULL, RETURN_FILE, true);
>> +#endif /* CONFIG_NFS_V4_1 */
>> +}
>> +
>>  /*
>>  * The file is not closed if it is opened due to the a request to change
>>  * the size of the file. The open call will not be needed once the
>> @@ -2359,6 +2372,8 @@ nfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
>>        struct nfs4_state *state = NULL;
>>        int status;
>>
>> +       pnfs4_return_layout_on_setattr(inode);
>> +
>>        nfs_fattr_init(fattr);
>>
>>        /* Search for an existing open(O_WRITE) file */
>> @@ -2378,25 +2393,6 @@ nfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
>>        return status;
>>  }
>>
>> -#ifdef CONFIG_NFS_V4_1
>> -/*
>> - * Return layout before issueing a setattr
>> - */
>> -static int
>> -pnfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
>> -                   struct iattr *sattr)
>> -{
>> -       struct inode *inode = dentry->d_inode;
>> -       struct nfs_server *server = NFS_SERVER(inode);
>> -       struct nfs_inode *nfsi = NFS_I(inode);
>> -
>> -       if (pnfs_enabled_sb(server) && has_layout(nfsi) &&
>> -           pnfs_ld_layoutret_on_setattr(server->pnfs_curr_ld))
>> -               pnfs_return_layout(inode, NULL, NULL, RETURN_FILE, true);
>> -       return nfs4_proc_setattr(dentry, fattr, sattr);
>> -}
>> -#endif /* CONFIG_NFS_V4_1 */
>> -
>>  static int _nfs4_proc_lookupfh(struct nfs_server *server, const struct nfs_fh *dirfh,
>>                const struct qstr *name, struct nfs_fh *fhandle,
>>                struct nfs_fattr *fattr)
>> @@ -6068,7 +6064,6 @@ pnfs_v4_clientops_init(void)
>>        struct nfs_rpc_ops *p = (struct nfs_rpc_ops *)&pnfs_v4_clientops;
>>
>>        memcpy(p, &nfs_v4_clientops, sizeof(*p));
>> -       p->setattr              = pnfs4_proc_setattr;
>>        p->read_done            = pnfs4_read_done;
>>        p->write_setup          = pnfs4_proc_write_setup;
>>        p->write_done           = pnfs4_write_done;
>> --
>> 1.6.4.4
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 06/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 3
  2010-06-17 14:49 ` [PATCH 06/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 3 Benny Halevy
@ 2010-06-17 15:15   ` Fred Isaman
       [not found]     ` <AANLkTikvo8qP_B23suRB-lKNCcCQv4W6Vw8kBmPC_6SX-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 27+ messages in thread
From: Fred Isaman @ 2010-06-17 15:15 UTC (permalink / raw)
  To: Benny Halevy; +Cc: linux-nfs

On Thu, Jun 17, 2010 at 10:49 AM, Benny Halevy <bhalevy@panasas.com> wr=
ote:
> Do not renew the data server lease.
>
> Signed-off-by: Benny Halevy <bhalevy@panasas.com>
> ---
> =A0fs/nfs/nfs4proc.c | =A0 =A02 +-
> =A01 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
> index 77b7182..e8b0f33 100644
> --- a/fs/nfs/nfs4proc.c
> +++ b/fs/nfs/nfs4proc.c
> @@ -3164,7 +3164,7 @@ static int nfs4_read_done(struct rpc_task *task=
, struct nfs_read_data *data)
> =A0 =A0 =A0 =A0}
>
> =A0 =A0 =A0 =A0nfs_invalidate_atime(data->inode);
> - =A0 =A0 =A0 if (task->tk_status > 0)
> + =A0 =A0 =A0 if (task->tk_status > 0 && client =3D=3D server->nfs_cl=
ient)

Will this test work if there is a dual role MDS/DS?

=46red

> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0renew_lease(server, data->timestamp);
> =A0 =A0 =A0 =A0return 0;
> =A0}
> --
> 1.6.4.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" =
in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at =A0http://vger.kernel.org/majordomo-info.html
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 09/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 2
  2010-06-17 14:49 ` [PATCH 09/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 2 Benny Halevy
@ 2010-06-17 15:19   ` Fred Isaman
       [not found]     ` <AANLkTimHng4urMH5CTn68aZJ_NKIasCH6VJOTCI-2zRQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 27+ messages in thread
From: Fred Isaman @ 2010-06-17 15:19 UTC (permalink / raw)
  To: Benny Halevy; +Cc: linux-nfs

On Thu, Jun 17, 2010 at 10:49 AM, Benny Halevy <bhalevy@panasas.com> wr=
ote:
> PNFS_NO_RPC.
>
> Signed-off-by: Benny Halevy <bhalevy@panasas.com>
> ---
> =A0fs/nfs/nfs4proc.c | =A0 =A03 +++
> =A01 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
> index 5948de5..fd2b588 100644
> --- a/fs/nfs/nfs4proc.c
> +++ b/fs/nfs/nfs4proc.c
> @@ -3279,6 +3279,9 @@ static int nfs4_write_done(struct rpc_task *tas=
k, struct nfs_write_data *data)
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0data->pdata.orig_count=
);
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0data->args.count =3D data->pdata.orig_=
count;
> =A0 =A0 =A0 =A0}
> +
> + =A0 =A0 =A0 if (data->pdata.pnfsflags & PNFS_NO_RPC)
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 return 0;
> =A0#endif /* CONFIG_NFS_V4_1 */

Again, this is is a post-submit patch

=46red

>
> =A0 =A0 =A0 =A0nfs4_sequence_done(NFS_SERVER(inode), &data->res.seq_r=
es,
> --
> 1.6.4.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" =
in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at =A0http://vger.kernel.org/majordomo-info.html
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 06/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 3
       [not found]     ` <AANLkTikvo8qP_B23suRB-lKNCcCQv4W6Vw8kBmPC_6SX-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2010-06-17 15:26       ` Benny Halevy
  0 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 15:26 UTC (permalink / raw)
  To: Fred Isaman; +Cc: linux-nfs

On Jun. 17, 2010, 11:15 -0400, Fred Isaman <iisaman@umich.edu> wrote:
> On Thu, Jun 17, 2010 at 10:49 AM, Benny Halevy <bhalevy@panasas.com> wrote:
>> Do not renew the data server lease.
>>
>> Signed-off-by: Benny Halevy <bhalevy@panasas.com>
>> ---
>>  fs/nfs/nfs4proc.c |    2 +-
>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
>> index 77b7182..e8b0f33 100644
>> --- a/fs/nfs/nfs4proc.c
>> +++ b/fs/nfs/nfs4proc.c
>> @@ -3164,7 +3164,7 @@ static int nfs4_read_done(struct rpc_task *task, struct nfs_read_data *data)
>>        }
>>
>>        nfs_invalidate_atime(data->inode);
>> -       if (task->tk_status > 0)
>> +       if (task->tk_status > 0 && client == server->nfs_client)
> 
> Will this test work if there is a dual role MDS/DS?
> 

The filehandle determines the "DS personality"
as per 13.6. Operations Sent to NFSv4.1 Data Servers
so the dual role server should act no different than any
other DS with this respect.

Benny

> Fred
> 
>>                renew_lease(server, data->timestamp);
>>        return 0;
>>  }
>> --
>> 1.6.4.4
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 09/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 2
       [not found]     ` <AANLkTimHng4urMH5CTn68aZJ_NKIasCH6VJOTCI-2zRQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2010-06-17 15:27       ` Benny Halevy
  0 siblings, 0 replies; 27+ messages in thread
From: Benny Halevy @ 2010-06-17 15:27 UTC (permalink / raw)
  To: Fred Isaman; +Cc: linux-nfs

On Jun. 17, 2010, 11:19 -0400, Fred Isaman <iisaman@umich.edu> wrote:
> On Thu, Jun 17, 2010 at 10:49 AM, Benny Halevy <bhalevy@panasas.com> wrote:
>> PNFS_NO_RPC.
>>
>> Signed-off-by: Benny Halevy <bhalevy@panasas.com>
>> ---
>>  fs/nfs/nfs4proc.c |    3 +++
>>  1 files changed, 3 insertions(+), 0 deletions(-)
>>
>> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
>> index 5948de5..fd2b588 100644
>> --- a/fs/nfs/nfs4proc.c
>> +++ b/fs/nfs/nfs4proc.c
>> @@ -3279,6 +3279,9 @@ static int nfs4_write_done(struct rpc_task *task, struct nfs_write_data *data)
>>                        data->pdata.orig_count);
>>                data->args.count = data->pdata.orig_count;
>>        }
>> +
>> +       if (data->pdata.pnfsflags & PNFS_NO_RPC)
>> +               return 0;
>>  #endif /* CONFIG_NFS_V4_1 */
> 
> Again, this is is a post-submit patch

Right.  sorry for badly naming it.
It will applied against the post-submit pnfs branch.

Benny

> 
> Fred
> 
>>
>>        nfs4_sequence_done(NFS_SERVER(inode), &data->res.seq_res,
>> --
>> 1.6.4.4
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2010-06-17 15:27 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-06-17 14:47 [PATCH 0/19]: merge pnfs client ops into nfs4's Benny Halevy
2010-06-17 14:48 ` [PATCH 01/19] SQUASHME: pnfs-submit: merge pnfs4_proc_setattr into nfs4_proc_setattr Benny Halevy
2010-06-17 15:00   ` Fred Isaman
     [not found]     ` <AANLkTika4BAGrDg0CnUPRy9Qji6rThr5zcZ0S8ciAr29-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-06-17 15:12       ` Benny Halevy
2010-06-17 14:48 ` [PATCH 02/19] SQUASHME: pnfs4_read_done status variable is unused Benny Halevy
2010-06-17 14:48 ` [PATCH 03/19] SQUASHME: pnfs-submit: optionally pass nfs_client to nfs4_async_handle_error Benny Halevy
2010-06-17 14:48 ` [PATCH 04/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 1 Benny Halevy
2010-06-17 15:09   ` Fred Isaman
2010-06-17 14:49 ` [PATCH 05/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 2 Benny Halevy
2010-06-17 14:49 ` [PATCH 06/19] SQUASHME: pnfs-submit: merge pnfs4_read_done into nfs4_read_done - part 3 Benny Halevy
2010-06-17 15:15   ` Fred Isaman
     [not found]     ` <AANLkTikvo8qP_B23suRB-lKNCcCQv4W6Vw8kBmPC_6SX-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-06-17 15:26       ` Benny Halevy
2010-06-17 14:49 ` [PATCH 07/19] SQUASHME: pnfs-submit: get rid of pnfs4_read_done Benny Halevy
2010-06-17 14:49 ` [PATCH 08/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 1 Benny Halevy
2010-06-17 14:49 ` [PATCH 09/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 2 Benny Halevy
2010-06-17 15:19   ` Fred Isaman
     [not found]     ` <AANLkTimHng4urMH5CTn68aZJ_NKIasCH6VJOTCI-2zRQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-06-17 15:27       ` Benny Halevy
2010-06-17 14:49 ` [PATCH 10/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 3 Benny Halevy
2010-06-17 14:50 ` [PATCH 11/19] SQUASHME: pnfs-submit: merge pnfs4_write_done into nfs4_write_done - part 4 Benny Halevy
2010-06-17 14:50 ` [PATCH 12/19] SQUASHME: pnfs-submit: get rid of pnfs4_write_done Benny Halevy
2010-06-17 14:50 ` [PATCH 13/19] SQUASHME: pnfs-submit: merge pnfs4_commit_done into nfs4_commit_done - part 1 Benny Halevy
2010-06-17 14:50 ` [PATCH 14/19] SQUASHME: pnfs-submit: merge pnfs4_commit_done into nfs4_commit_done - part 2 Benny Halevy
2010-06-17 14:50 ` [PATCH 15/19] SQUASHME: pnfs-submit: merge pnfs4_commit_done into nfs4_commit_done - part 3 Benny Halevy
2010-06-17 14:51 ` [PATCH 16/19] SQUASHME: pnfs-submit: get rid of pnfs4_commit_done Benny Halevy
2010-06-17 14:51 ` [PATCH 17/19] SQUASHME: pnfs-submit: merge pnfs4_proc_write_setup into nfs4_proc_write_setup Benny Halevy
2010-06-17 14:51 ` [PATCH 18/19] SQUASHME: pnfs-submit: merge pnfs4_proc_commit_setup into nfs4_proc_commit_setup Benny Halevy
2010-06-17 14:51 ` [PATCH 19/19] SQUASHME: pnfs-submit: get rid of pnfs_v4_clientops Benny Halevy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox