Messages in this thread | | | Date | Fri, 10 Apr 2009 20:29:37 +0200 | From | Frederic Weisbecker <> | Subject | Re: [PATCH] remove the BKL: remove "BKL auto-drop" assumption from nfs3_rpc_wrapper() |
| |
On Fri, Apr 10, 2009 at 06:34:41PM +0200, Alessio Igor Bogani wrote: > 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>
Hi Alessio,
Btw, does it fix the lockdep message you've seen while mounting an nfs point?
Thanks, Frederic.
> --- > 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 >
| |