Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=848f1fe6be2e290691bb6c13cbb8fd92bd0cfaab
Commit:     848f1fe6be2e290691bb6c13cbb8fd92bd0cfaab
Parent:     34f52e3591f241b825353ba27def956d8487c400
Author:     Trond Myklebust <[EMAIL PROTECTED]>
AuthorDate: Sat Jun 9 19:39:12 2007 -0400
Committer:  Trond Myklebust <[EMAIL PROTECTED]>
CommitDate: Tue Jul 10 23:40:29 2007 -0400

    SUNRPC: Kill rpc_clnt->cl_dead
    
    Its use is at best racy, and there is only one user (lockd), which has
    additional locking that makes the whole thing redundant.
    
    Signed-off-by: Trond Myklebust <[EMAIL PROTECTED]>
---
 include/linux/sunrpc/clnt.h |    3 +--
 net/sunrpc/clnt.c           |   18 +++---------------
 2 files changed, 4 insertions(+), 17 deletions(-)

diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h
index 003d8ea..ab3ef6d 100644
--- a/include/linux/sunrpc/clnt.h
+++ b/include/linux/sunrpc/clnt.h
@@ -45,8 +45,7 @@ struct rpc_clnt {
                                cl_intr     : 1,/* interruptible */
                                cl_discrtry : 1,/* disconnect before retry */
                                cl_autobind : 1,/* use getport() */
-                               cl_oneshot  : 1,/* dispose after use */
-                               cl_dead     : 1;/* abandoned */
+                               cl_oneshot  : 1;/* dispose after use */
 
        struct rpc_rtt *        cl_rtt;         /* RTO estimator data */
 
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index 254a6e1..fb65249 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -286,7 +286,6 @@ rpc_clone_client(struct rpc_clnt *clnt)
        /* Turn off autobind on clones */
        new->cl_autobind = 0;
        new->cl_oneshot = 0;
-       new->cl_dead = 0;
        INIT_LIST_HEAD(&new->cl_tasks);
        spin_lock_init(&new->cl_lock);
        rpc_init_rtt(&new->cl_rtt_default, clnt->cl_xprt->timeout.to_initval);
@@ -305,9 +304,8 @@ out_no_clnt:
 
 /*
  * Properly shut down an RPC client, terminating all outstanding
- * requests. Note that we must be certain that cl_oneshot and
- * cl_dead are cleared, or else the client would be destroyed
- * when the last task releases it.
+ * requests. Note that we must be certain that cl_oneshot is cleared,
+ * or else the client would be destroyed when the last task releases it.
  */
 int
 rpc_shutdown_client(struct rpc_clnt *clnt)
@@ -318,7 +316,6 @@ rpc_shutdown_client(struct rpc_clnt *clnt)
        while (!list_empty(&clnt->cl_tasks)) {
                /* Don't let rpc_release_client destroy us */
                clnt->cl_oneshot = 0;
-               clnt->cl_dead = 0;
                rpc_killall_tasks(clnt);
                wait_event_timeout(destroy_wait,
                        list_empty(&clnt->cl_tasks), 1*HZ);
@@ -369,7 +366,7 @@ rpc_release_client(struct rpc_clnt *clnt)
 
        if (list_empty(&clnt->cl_tasks))
                wake_up(&destroy_wait);
-       if (clnt->cl_oneshot || clnt->cl_dead)
+       if (clnt->cl_oneshot)
                rpc_destroy_client(clnt);
        kref_put(&clnt->cl_kref, rpc_free_client);
 }
@@ -483,10 +480,6 @@ int rpc_call_sync(struct rpc_clnt *clnt, struct 
rpc_message *msg, int flags)
        sigset_t        oldset;
        int             status;
 
-       /* If this client is slain all further I/O fails */
-       if (clnt->cl_dead)
-               return -EIO;
-
        BUG_ON(flags & RPC_TASK_ASYNC);
 
        task = rpc_new_task(clnt, flags, &rpc_default_ops, NULL);
@@ -519,11 +512,6 @@ rpc_call_async(struct rpc_clnt *clnt, struct rpc_message 
*msg, int flags,
        sigset_t        oldset;
        int             status;
 
-       /* If this client is slain all further I/O fails */
-       status = -EIO;
-       if (clnt->cl_dead)
-               goto out_release;
-
        flags |= RPC_TASK_ASYNC;
 
        /* Create/initialize a new RPC task */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to