NFS: Get rid of nfs_restart_rpc()
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 19 Oct 2011 19:17:29 +0000 (12:17 -0700)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 19 Oct 2011 20:58:30 +0000 (13:58 -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 ab12913dd473bb1ef1ea27260699fbd4f7d76430..c1a1bd8ddf1cbecfbba4f375fec6c78d5d36ae60 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 4c78c62639e6984ac2fedff423e657d4f4be5821..09119418402fe0d386b26a89fdb5bd103eec60c4 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 ba0da50865fe475dc0d5b112c2167185c1917420..d2ae413c986ac7b38adc3aee5903717c8226c421 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 bfc20b160243de06d8bf4354268c9e075cdc3cad..e866a7e6e2d593be073df0a6d382a8212caf0c2c 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 b2fbbde58e442b7ae442f0afad3901fd4d5bde3c..4f9319a2e5674554d48a01af2189011a5e35346c 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 2084a649421816184781335356c282a4226a6448..ad90b0c998cbad942aefa7245781f241aa0831d2 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 c5347d29cfb75d9b045d4ad3a7d5231e03f59100..f0268ea7e71121f3c07f159b6f46732b4074dd73 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);