]> err.no Git - linux-2.6/blobdiff - net/sunrpc/xprtsock.c
SUNRPC: Clean up rpc_pipefs.
[linux-2.6] / net / sunrpc / xprtsock.c
index a5a32029e7283e9ef2bf7b834fef64e202e3330d..ee6ad3baf68049f032824eb768043f93d8f9d897 100644 (file)
@@ -653,8 +653,7 @@ static void xs_destroy(struct rpc_xprt *xprt)
 
        dprintk("RPC:       xs_destroy xprt %p\n", xprt);
 
-       cancel_delayed_work(&transport->connect_worker);
-       flush_scheduled_work();
+       cancel_rearming_delayed_work(&transport->connect_worker);
 
        xprt_disconnect(xprt);
        xs_close(xprt);
@@ -1001,7 +1000,7 @@ static void xs_tcp_state_change(struct sock *sk)
                /* Try to schedule an autoclose RPC calls */
                set_bit(XPRT_CLOSE_WAIT, &xprt->state);
                if (test_and_set_bit(XPRT_LOCKED, &xprt->state) == 0)
-                       schedule_work(&xprt->task_cleanup);
+                       queue_work(rpciod_workqueue, &xprt->task_cleanup);
        default:
                xprt_disconnect(xprt);
        }
@@ -1410,18 +1409,16 @@ static void xs_connect(struct rpc_task *task)
                dprintk("RPC:       xs_connect delayed xprt %p for %lu "
                                "seconds\n",
                                xprt, xprt->reestablish_timeout / HZ);
-               schedule_delayed_work(&transport->connect_worker,
-                                       xprt->reestablish_timeout);
+               queue_delayed_work(rpciod_workqueue,
+                                  &transport->connect_worker,
+                                  xprt->reestablish_timeout);
                xprt->reestablish_timeout <<= 1;
                if (xprt->reestablish_timeout > XS_TCP_MAX_REEST_TO)
                        xprt->reestablish_timeout = XS_TCP_MAX_REEST_TO;
        } else {
                dprintk("RPC:       xs_connect scheduled xprt %p\n", xprt);
-               schedule_delayed_work(&transport->connect_worker, 0);
-
-               /* flush_scheduled_work can sleep... */
-               if (!RPC_IS_ASYNC(task))
-                       flush_scheduled_work();
+               queue_delayed_work(rpciod_workqueue,
+                                  &transport->connect_worker, 0);
        }
 }
 
@@ -1476,7 +1473,7 @@ static struct rpc_xprt_ops xs_udp_ops = {
        .set_buffer_size        = xs_udp_set_buffer_size,
        .reserve_xprt           = xprt_reserve_xprt_cong,
        .release_xprt           = xprt_release_xprt_cong,
-       .rpcbind                = rpc_getport,
+       .rpcbind                = rpcb_getport,
        .set_port               = xs_set_port,
        .connect                = xs_connect,
        .buf_alloc              = rpc_malloc,
@@ -1493,7 +1490,7 @@ static struct rpc_xprt_ops xs_udp_ops = {
 static struct rpc_xprt_ops xs_tcp_ops = {
        .reserve_xprt           = xprt_reserve_xprt,
        .release_xprt           = xs_tcp_release_xprt,
-       .rpcbind                = rpc_getport,
+       .rpcbind                = rpcb_getport,
        .set_port               = xs_set_port,
        .connect                = xs_connect,
        .buf_alloc              = rpc_malloc,