lkml.org 
[lkml]   [2006]   [May]   [29]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
    /
    DateMon, 29 May 2006 18:36:24 -0700
    FromAndrew Morton <>
    SubjectRe: [patch 55/61] lock validator: special locking: sb->s_umount
    On Mon, 29 May 2006 23:27:32 +0200
    Ingo Molnar <mingo@elte.hu> wrote:
    
    > From: Ingo Molnar <mingo@elte.hu>
    > 
    > workaround for special sb->s_umount locking rule.
    > 
    > s_umount gets held across a series of lock dropping and releasing
    > in prune_one_dentry(), so i changed the order, at the risk of
    > introducing a umount race. FIXME.
    > 
    > i think a better fix would be to do the unlocks as _non_nested in
    > prune_one_dentry(), and to do the up_read() here as
    > an up_read_non_nested() as well?
    > 
    > Signed-off-by: Ingo Molnar <mingo@elte.hu>
    > Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
    > ---
    >  fs/dcache.c |    3 ++-
    >  1 file changed, 2 insertions(+), 1 deletion(-)
    > 
    > Index: linux/fs/dcache.c
    > ===================================================================
    > --- linux.orig/fs/dcache.c
    > +++ linux/fs/dcache.c
    > @@ -470,8 +470,9 @@ static void prune_dcache(int count, stru
    >  		s_umount = &dentry->d_sb->s_umount;
    >  		if (down_read_trylock(s_umount)) {
    >  			if (dentry->d_sb->s_root != NULL) {
    > -				prune_one_dentry(dentry);
    > +// lockdep hack: do this better!
    >  				up_read(s_umount);
    > +				prune_one_dentry(dentry);
    >  				continue;
    
    argh, you broke my kernel!
    
    I'll whack some ifdefs in here so it's only known-broken if CONFIG_LOCKDEP.
    
    Again, we'd need the real fix here.
    -
    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-05-30 03:38    [from the cache]
    ©2003-2008