NFS: Get rid of nfs_restart_rpc()
Trond Myklebust [Wed, 19 Oct 2011 19:17:29 +0000 (12:17 -0700)]
It can trivially be replaced with rpc_restart_call_prepare.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

fs/nfs/internal.h
fs/nfs/nfs4filelayout.c
fs/nfs/nfs4proc.c
fs/nfs/read.c
fs/nfs/unlink.c
fs/nfs/write.c
net/sunrpc/clnt.c

index ab12913..c1a1bd8 100644 (file)
@@ -457,13 +457,3 @@ unsigned int nfs_page_array_len(unsigned int base, size_t len)
                PAGE_SIZE - 1) >> PAGE_SHIFT;
 }
 
-/*
- * Helper for restarting RPC calls in the possible presence of NFSv4.1
- * sessions.
- */
-static inline int nfs_restart_rpc(struct rpc_task *task, const struct nfs_client *clp)
-{
-       if (nfs4_has_session(clp))
-               return rpc_restart_call_prepare(task);
-       return rpc_restart_call(task);
-}
index 4c78c62..0911941 100644 (file)
@@ -122,7 +122,6 @@ static int filelayout_async_handle_error(struct rpc_task *task,
 static int filelayout_read_done_cb(struct rpc_task *task,
                                struct nfs_read_data *data)
 {
-       struct nfs_client *clp = data->ds_clp;
        int reset = 0;
 
        dprintk("%s DS read\n", __func__);
@@ -134,9 +133,8 @@ static int filelayout_read_done_cb(struct rpc_task *task,
                if (reset) {
                        pnfs_set_lo_fail(data->lseg);
                        nfs4_reset_read(task, data);
-                       clp = NFS_SERVER(data->inode)->nfs_client;
                }
-               nfs_restart_rpc(task, clp);
+               rpc_restart_call_prepare(task);
                return -EAGAIN;
        }
 
@@ -203,17 +201,13 @@ static int filelayout_write_done_cb(struct rpc_task *task,
 
        if (filelayout_async_handle_error(task, data->args.context->state,
                                          data->ds_clp, &reset) == -EAGAIN) {
-               struct nfs_client *clp;
-
                dprintk("%s calling restart ds_clp %p ds_clp->cl_session %p\n",
                        __func__, data->ds_clp, data->ds_clp->cl_session);
                if (reset) {
                        pnfs_set_lo_fail(data->lseg);
                        nfs4_reset_write(task, data);
-                       clp = NFS_SERVER(data->inode)->nfs_client;
-               } else
-                       clp = data->ds_clp;
-               nfs_restart_rpc(task, clp);
+               }
+               rpc_restart_call_prepare(task);
                return -EAGAIN;
        }
 
@@ -245,7 +239,7 @@ static int filelayout_commit_done_cb(struct rpc_task *task,
                        prepare_to_resend_writes(data);
                        pnfs_set_lo_fail(data->lseg);
                } else
-                       nfs_restart_rpc(task, data->ds_clp);
+                       rpc_restart_call_prepare(task);
                return -EAGAIN;
        }
 
index ba0da50..d2ae413 100644 (file)
@@ -3191,7 +3191,7 @@ static int nfs4_read_done_cb(struct rpc_task *task, struct nfs_read_data *data)
        struct nfs_server *server = NFS_SERVER(data->inode);
 
        if (nfs4_async_handle_error(task, server, data->args.context->state) == -EAGAIN) {
-               nfs_restart_rpc(task, server->nfs_client);
+               rpc_restart_call_prepare(task);
                return -EAGAIN;
        }
 
@@ -3241,7 +3241,7 @@ static int nfs4_write_done_cb(struct rpc_task *task, struct nfs_write_data *data
        struct inode *inode = data->inode;
        
        if (nfs4_async_handle_error(task, NFS_SERVER(inode), data->args.context->state) == -EAGAIN) {
-               nfs_restart_rpc(task, NFS_SERVER(inode)->nfs_client);
+               rpc_restart_call_prepare(task);
                return -EAGAIN;
        }
        if (task->tk_status >= 0) {
@@ -3298,7 +3298,7 @@ static int nfs4_commit_done_cb(struct rpc_task *task, struct nfs_write_data *dat
        struct inode *inode = data->inode;
 
        if (nfs4_async_handle_error(task, NFS_SERVER(inode), NULL) == -EAGAIN) {
-               nfs_restart_rpc(task, NFS_SERVER(inode)->nfs_client);
+               rpc_restart_call_prepare(task);
                return -EAGAIN;
        }
        nfs_refresh_inode(inode, data->res.fattr);
@@ -3838,7 +3838,7 @@ static void nfs4_delegreturn_done(struct rpc_task *task, void *calldata)
        default:
                if (nfs4_async_handle_error(task, data->res.server, NULL) ==
                                -EAGAIN) {
-                       nfs_restart_rpc(task, data->res.server->nfs_client);
+                       rpc_restart_call_prepare(task);
                        return;
                }
        }
@@ -4092,8 +4092,7 @@ static void nfs4_locku_done(struct rpc_task *task, void *data)
                        break;
                default:
                        if (nfs4_async_handle_error(task, calldata->server, NULL) == -EAGAIN)
-                               nfs_restart_rpc(task,
-                                                calldata->server->nfs_client);
+                               rpc_restart_call_prepare(task);
        }
 }
 
@@ -4926,7 +4925,7 @@ static void nfs4_get_lease_time_done(struct rpc_task *task, void *calldata)
                task->tk_status = 0;
                /* fall through */
        case -NFS4ERR_RETRY_UNCACHED_REP:
-               nfs_restart_rpc(task, data->clp);
+               rpc_restart_call_prepare(task);
                return;
        }
        dprintk("<-- %s\n", __func__);
@@ -5767,7 +5766,7 @@ static void nfs4_layoutreturn_done(struct rpc_task *task, void *calldata)
 
        server = NFS_SERVER(lrp->args.inode);
        if (nfs4_async_handle_error(task, server, NULL) == -EAGAIN) {
-               nfs_restart_rpc(task, lrp->clp);
+               rpc_restart_call_prepare(task);
                return;
        }
        spin_lock(&lo->plh_inode->i_lock);
@@ -5938,7 +5937,7 @@ nfs4_layoutcommit_done(struct rpc_task *task, void *calldata)
        }
 
        if (nfs4_async_handle_error(task, server, NULL) == -EAGAIN) {
-               nfs_restart_rpc(task, server->nfs_client);
+               rpc_restart_call_prepare(task);
                return;
        }
 
index bfc20b1..e866a7e 100644 (file)
@@ -435,7 +435,7 @@ static void nfs_readpage_retry(struct rpc_task *task, struct nfs_read_data *data
        argp->offset += resp->count;
        argp->pgbase += resp->count;
        argp->count -= resp->count;
-       nfs_restart_rpc(task, NFS_SERVER(data->inode)->nfs_client);
+       rpc_restart_call_prepare(task);
 }
 
 /*
index b2fbbde..4f9319a 100644 (file)
@@ -87,7 +87,7 @@ static void nfs_async_unlink_done(struct rpc_task *task, void *calldata)
        struct inode *dir = data->dir;
 
        if (!NFS_PROTO(dir)->unlink_done(task, dir))
-               nfs_restart_rpc(task, NFS_SERVER(dir)->nfs_client);
+               rpc_restart_call_prepare(task);
 }
 
 /**
@@ -369,7 +369,7 @@ static void nfs_async_rename_done(struct rpc_task *task, void *calldata)
        struct dentry *new_dentry = data->new_dentry;
 
        if (!NFS_PROTO(old_dir)->rename_done(task, old_dir, new_dir)) {
-               nfs_restart_rpc(task, NFS_SERVER(old_dir)->nfs_client);
+               rpc_restart_call_prepare(task);
                return;
        }
 
index 2084a64..ad90b0c 100644 (file)
@@ -1305,7 +1305,7 @@ void nfs_writeback_done(struct rpc_task *task, struct nfs_write_data *data)
                                 */
                                argp->stable = NFS_FILE_SYNC;
                        }
-                       nfs_restart_rpc(task, server->nfs_client);
+                       rpc_restart_call_prepare(task);
                        return;
                }
                if (time_before(complain, jiffies)) {
index c5347d2..f0268ea 100644 (file)
@@ -850,7 +850,9 @@ rpc_restart_call_prepare(struct rpc_task *task)
 {
        if (RPC_ASSASSINATED(task))
                return 0;
-       task->tk_action = rpc_prepare_task;
+       task->tk_action = call_start;
+       if (task->tk_ops->rpc_call_prepare != NULL)
+               task->tk_action = rpc_prepare_task;
        return 1;
 }
 EXPORT_SYMBOL_GPL(rpc_restart_call_prepare);