lkml.org 
[lkml]   [2010]   [May]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: 2.6.33.3-rt19 kernel BUG's
    From
    Date
    On Mon, 2010-05-10 at 10:11 -0700, Fernando Lopez-Lezcano wrote:
    > On Fri, 2010-05-07 at 17:39 -0700, john stultz wrote:
    > > On Fri, 2010-05-07 at 23:58 +0000, Fernando Lopez-Lezcano wrote:
    > > > On Fri, 2010-05-07 at 16:43 -0700, john stultz wrote:
    > > > > On Fri, 2010-05-07 at 12:41 +0200, Thomas Gleixner wrote:
    > > > > > On Thu, 6 May 2010, Fernando Lopez-Lezcano wrote:
    > > > > >
    > > > > > CC'ed John and Nick
    > > > > >
    > > > > > > See below... just trying to boot (quad core desktop machine).
    > > > >
    > > > > Ok. Got this to reproduce. Will hopefully have a fix for your soon.
    > > > >
    > > > > Thanks for the bug report!
    > > >
    > > > Thanks for looking at it! It had been a while since I had problems with
    > > > rt so I could not understand why I could not login :-)
    > >
    > > Bah! I should have caught this faster. I kept thinking it had to be some
    > > missed unlock of the sbi->fs_lock, but it ends up its just the
    > > autofs4_lock.
    > >
    > > Apparently the conversion from using the dcache_lock -> autofs4_lock
    > > forgot that this function already grabs the autofs_lock for a small
    > > moment, so we end up grabbing the lock, then a moment later grab it
    > > again. Splat.
    > >
    > > This patch should resolve it.
    >
    > I'm still having problems when trying to use autofs, even with your
    > previous patch:

    Oof.. More of the same autofs4_lock misuse. I skimmed over the rest of
    its use, and it seems ok, so hopefully we won't hit any more problems
    caused by it.

    Here's both autofs4_lock changes together.

    Signed-off-by: John Stultz <johnstul@us.ibm.com.

    diff --git a/fs/autofs4/root.c b/fs/autofs4/root.c
    index 5b26088..40ca936 100644
    --- a/fs/autofs4/root.c
    +++ b/fs/autofs4/root.c
    @@ -317,7 +317,6 @@ static void *autofs4_follow_link(struct dentry *dentry, struct nameidata *nd)
    * multi-mount with no root mount offset. So don't try to
    * mount it again.
    */
    - spin_lock(&autofs4_lock);
    spin_lock(&dentry->d_lock);
    if (ino->flags & AUTOFS_INF_PENDING ||
    (!d_mountpoint(dentry) && list_empty(&dentry->d_subdirs))) {
    @@ -438,12 +437,10 @@ static int autofs4_revalidate(struct dentry *dentry, struct nameidata *nd)
    }

    /* Check for a non-mountpoint directory with no contents */
    - spin_lock(&autofs4_lock);
    if (S_ISDIR(dentry->d_inode->i_mode) &&
    !d_mountpoint(dentry) && list_empty(&dentry->d_subdirs)) {
    DPRINTK("dentry=%p %.*s, emptydir",
    dentry, dentry->d_name.len, dentry->d_name.name);
    - spin_unlock(&autofs4_lock);

    if (autofs4_need_mount(flags) || current->link_count) {
    int status;




    \
     
     \ /
      Last update: 2010-05-12 10:15    [W:3.607 / U:1.140 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site