lkml.org 
[lkml]   [2006]   [Dec]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 008 of 18] knfsd: svcrpc: remove another silent drop from deferral code

    From: J.Bruce Fields <bfields@fieldses.org>

    There's no point deferring something just to immediately fail the deferral,
    especially now that we can do something more useful in the failure case by
    returning an error.

    Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
    Signed-off-by: Neil Brown <neilb@suse.de>

    ### Diffstat output
    ./net/sunrpc/cache.c | 20 +++++++++-----------
    1 file changed, 9 insertions(+), 11 deletions(-)

    diff .prev/net/sunrpc/cache.c ./net/sunrpc/cache.c
    --- .prev/net/sunrpc/cache.c 2006-12-08 12:09:12.000000000 +1100
    +++ ./net/sunrpc/cache.c 2006-12-08 12:09:26.000000000 +1100
    @@ -530,6 +530,13 @@ static int cache_defer_req(struct cache_
    struct cache_deferred_req *dreq;
    int hash = DFR_HASH(item);

    + if (cache_defer_cnt >= DFR_MAX) {
    + /* too much in the cache, randomly drop this one,
    + * or continue and drop the oldest below
    + */
    + if (net_random()&1)
    + return -ETIMEDOUT;
    + }
    dreq = req->defer(req);
    if (dreq == NULL)
    return -ETIMEDOUT;
    @@ -548,17 +555,8 @@ static int cache_defer_req(struct cache_
    /* it is in, now maybe clean up */
    dreq = NULL;
    if (++cache_defer_cnt > DFR_MAX) {
    - /* too much in the cache, randomly drop
    - * first or last
    - */
    - if (net_random()&1)
    - dreq = list_entry(cache_defer_list.next,
    - struct cache_deferred_req,
    - recent);
    - else
    - dreq = list_entry(cache_defer_list.prev,
    - struct cache_deferred_req,
    - recent);
    + dreq = list_entry(cache_defer_list.prev,
    + struct cache_deferred_req, recent);
    list_del(&dreq->recent);
    list_del(&dreq->hash);
    cache_defer_cnt--;
    -
    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: 2006-12-08 02:17    [W:0.030 / U:0.008 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site