lkml.org 
[lkml]   [2009]   [Apr]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] remove the BKL: remove "BKL auto-drop" assumption from nfs3_rpc_wrapper()
    Date
    Fix nfs3_rpc_wrapper()'s "schedule() drops the BKL automatically" assumption,
    when schedule_timeout_killable() does not do that it can lock up.

    Signed-off-by: Alessio Igor Bogani <abogani@texware.it>
    ---
    fs/nfs/nfs3proc.c | 7 +++++++
    1 files changed, 7 insertions(+), 0 deletions(-)

    diff --git a/fs/nfs/nfs3proc.c b/fs/nfs/nfs3proc.c
    index d0cc5ce..d91047c 100644
    --- a/fs/nfs/nfs3proc.c
    +++ b/fs/nfs/nfs3proc.c
    @@ -17,6 +17,7 @@
    #include <linux/nfs_page.h>
    #include <linux/lockd/bind.h>
    #include <linux/nfs_mount.h>
    +#include <linux/smp_lock.h>

    #include "iostat.h"
    #include "internal.h"
    @@ -28,11 +29,17 @@ static int
    nfs3_rpc_wrapper(struct rpc_clnt *clnt, struct rpc_message *msg, int flags)
    {
    int res;
    + int bkl = kernel_locked();
    +
    do {
    res = rpc_call_sync(clnt, msg, flags);
    if (res != -EJUKEBOX)
    break;
    + if (bkl)
    + unlock_kernel();
    schedule_timeout_killable(NFS_JUKEBOX_RETRY_TIME);
    + if (bkl)
    + lock_kernel();
    res = -ERESTARTSYS;
    } while (!fatal_signal_pending(current));
    return res;
    --
    1.6.0.4


    \
     
     \ /
      Last update: 2009-04-10 18:37    [W:0.019 / U:88.580 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site