[PATCH] no session no seq_done

Benny Halevy bhalevy at ns1.bhalevy.com
Thu May 3 09:35:54 EDT 2007


Fix BUG_ON(!session) in nfs41_proc_sequence_done.
pnfs4_{read,write}_done should not call server->rpc_ops->sequence_done
when data->session is NULL.  This can happen if we're doing
a layout driver I/O for non-file layout types.  In these cases
data->session remains null since the I/O to the storage device

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

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 69ad434..7ab0b01 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3537,8 +3537,8 @@ static int pnfs4_read_done(struct rpc_task *task, struct nfs_read_data *data)
 	if (task->tk_status > 0 && !(data->pnfsflags & PNFS_USE_DS))
 		renew_lease(server, data->timestamp);
 
-        if (server->rpc_ops->sequence_done)
-                server->rpc_ops->sequence_done(data->session,
+	if (data->session && server->rpc_ops->sequence_done)
+			server->rpc_ops->sequence_done(data->session,
 			data->res.minorversion_info, task->tk_status);
 	return 0;
 }
@@ -3628,7 +3628,7 @@ static int pnfs4_write_done(struct rpc_task *task, struct nfs_write_data *data)
 		pnfs_writeback_done_update(data);
 
 out:
-	if(server->rpc_ops->sequence_done)
+	if (data->session && server->rpc_ops->sequence_done)
 			server->rpc_ops->sequence_done(data->session,
 			data->res.minorversion_info, task->tk_status);
 
-- 
1.5.1


--------------070505020703030101040301--


More information about the pNFS mailing list