lkml.org 
[lkml]   [2001]   [Jan]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    SubjectSpinlocking patch for in xprt.c
    From

    The following patch (taken from the zero copy networking) upgrades the
    spinlocking of the xprt_(up|down)_transmit() 'semaphores' in order to
    work safely with the networking bottom halves. Several of the latter
    (cf. xprt.c:tcp_write_space() & friends) do want to test the value of
    'xprt->snd_task'.

    Cheers,
    Trond

    diff -u --recursive --new-file linux-2.4.1-fh_align/net/sunrpc/xprt.c linux-2.4.1-xprt/net/sunrpc/xprt.c
    --- linux-2.4.1-fh_align/net/sunrpc/xprt.c Wed Nov 29 07:34:01 2000
    +++ linux-2.4.1-xprt/net/sunrpc/xprt.c Fri Jan 12 11:58:42 2001
    @@ -1116,7 +1116,7 @@
    struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt;
    struct rpc_rqst *req = task->tk_rqstp;

    - spin_lock(&xprt_lock);
    + spin_lock_bh(&xprt_sock_lock);
    if (xprt->snd_task && xprt->snd_task != task) {
    dprintk("RPC: %4d TCP write queue full (task %d)\n",
    task->tk_pid, xprt->snd_task->tk_pid);
    @@ -1130,7 +1130,7 @@
    #endif
    req->rq_bytes_sent = 0;
    }
    - spin_unlock(&xprt_lock);
    + spin_unlock_bh(&xprt_sock_lock);
    return xprt->snd_task == task;
    }

    @@ -1143,10 +1143,10 @@
    struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt;

    if (xprt->snd_task && xprt->snd_task == task) {
    - spin_lock(&xprt_lock);
    + spin_lock_bh(&xprt_sock_lock);
    xprt->snd_task = NULL;
    rpc_wake_up_next(&xprt->sending);
    - spin_unlock(&xprt_lock);
    + spin_unlock_bh(&xprt_sock_lock);
    }
    }

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 13:28    [W:3.049 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site