lkml.org 
[lkml]   [2003]   [Jan]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    SubjectRe: strange sparc64 -> i586 intermittent but reproducible NFS write errors to one and only one fs
    From
    >>>>> " " == nix  <nix@esperi.demon.co.uk> writes:


    > Anyway, the problem appears in 2.4.20-pre10; I suspect

    > Trond Myklebust <trond.myklebust@fys.uio.no>:
    > o Workaround NFS hangs introduced in 2.4.20-pre

    > (so Cc:ed)

    > Does anyone have a pointer to this patch so I can try reversing
    > it from 2.4.20pre10? (I can't see it on l-k, but since I don't
    > know what it looks like it's hard to find it in the archives; I
    > don't have bitkeeper on this machine, and can't, as one of my
    > current projects involves version-control filesystems).

    It sounds rather strange that this particular patch should introduce
    an EIO, but here it is (fresh from BitKeeper)

    Cheers,
    Trond

    # This is a BitKeeper generated patch for the following project:
    # Project Name: Linux kernel tree
    # This patch format is intended for GNU patch command version 2.5 or higher.
    # This patch includes the following deltas:
    # ChangeSet 1.717.1.6 -> 1.717.1.7
    # net/sunrpc/xprt.c 1.30 -> 1.31
    #
    # The following is the BitKeeper ChangeSet Log
    # --------------------------------------------
    # 02/10/07 trond.myklebust@fys.uio.no 1.717.1.7
    # [PATCH] Workaround NFS hangs introduced in 2.4.20-pre
    #
    # Alan,
    #
    # Does the following patch make any difference to the hangs?
    #
    # It reverts one effect of my changes, and ensures that requests get resent
    # immediately after the timeout, even if doing so would violate the current
    # congestion window size.
    # Doing this ensures that we keep probing the `connection' to the server
    # rather than just waiting for the entire window to time out. The latter
    # can be very expensive due to the exponential backoff rule...
    #
    # Cheers,
    # Trond
    # --------------------------------------------
    #
    diff -Nru a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
    --- a/net/sunrpc/xprt.c Sun Jan 19 21:56:20 2003
    +++ b/net/sunrpc/xprt.c Sun Jan 19 21:56:20 2003
    @@ -171,10 +171,10 @@

    if (xprt->snd_task)
    return;
    - if (!xprt->nocong && RPCXPRT_CONGESTED(xprt))
    - return;
    task = rpc_wake_up_next(&xprt->resend);
    if (!task) {
    + if (!xprt->nocong && RPCXPRT_CONGESTED(xprt))
    + return;
    task = rpc_wake_up_next(&xprt->sending);
    if (!task)
    return;
    @@ -1013,7 +1013,6 @@
    }
    rpc_inc_timeo(&task->tk_client->cl_rtt);
    xprt_adjust_cwnd(req->rq_xprt, -ETIMEDOUT);
    - __xprt_put_cong(xprt, req);
    }
    req->rq_nresend++;

    @@ -1150,10 +1149,7 @@
    req->rq_bytes_sent = 0;
    }
    out_release:
    - spin_lock_bh(&xprt->sock_lock);
    - __xprt_release_write(xprt, task);
    - __xprt_put_cong(xprt, req);
    - spin_unlock_bh(&xprt->sock_lock);
    + xprt_release_write(xprt, task);
    return;
    out_receive:
    dprintk("RPC: %4d xmit complete\n", task->tk_pid);
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 13:32    [W:0.025 / U:3.068 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site