All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Mahoney <jeffm@suse.de>
To: Jeff Mahoney <jeffm@suse.com>
Cc: a.righi@cineca.it, Andrew Morton <akpm@linux-foundation.org>,
	"Vladimir V. Saveliev" <vs@namesys.com>,
	linux-kernel@vger.kernel.org, reiserfs-dev@namesys.com,
	Edward Shishkin <edward@namesys.com>,
	zam@clusterfs.com, ak@suse.de
Subject: Re: Fwd: Fw: [2.6.20.4] BUG: dentry xattrs still in use in shrink_dcache_for_umount() with reiserfs
Date: Sat, 21 Apr 2007 10:34:47 -0400	[thread overview]
Message-ID: <462A2107.6060902@suse.de> (raw)
In-Reply-To: <462A2055.1040509@suse.com>

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Jeff Mahoney wrote:
> Andrea Righi wrote:
>> Jeff Mahoney wrote:
>>> I have the patchset that I mentioned, but I'm not proposing it for 2.6.21.
>>> It's much too invasive to be introduced in an -rc7, but it does include
>>> locking changes that I believe avoid this bug.
>>>
>>> Vladimir was right in his analysis that sometimes get_xa_root() takes the
>>> reference once and other times twice, but not for the right reasons.  I save
>>> a reference to the xattr dir to avoid a lookup later, but when there are multiple
>>> getxattrs or listxattrs as the first xattr operation on the file system, we can end
>>> up taking a second reference when we shouldn't. This is because those operations
>>> are protected by read locks and the ->xattr_root pointer isn't protected by anything
>>> else. A quick fix would be to just extend the protection of the priv root's i_mutex
>>> around the assignment, and test first. The right fix involves a complete rework of
>>> the locking, and I have code to do that, it's just too late to include it in 2.6.21.
>>>
>>> I'd love to know what Andrea (and now Andi Kleen) are doing to hit this now. There
>>> haven't been any changes in this code in a while, and the shrink_dcache_for_umount()
>>> has been around since October. I'm unable to reproduce locally so far, so if Andrea
>>> or Andi could see if this fixes it for them, I'd appreciate it.
>> Jeff, your patch doesn't resolve, but you hit the problem. Actually, I
>> think the xattr_root pointer must be protected also in get_xa_root()
>> using the same private root i_mutex.
>>
>> I've tested the following patch and it resolves in my case. What do you
>> think about it? could it be a reasonable fix?
> 
> Your patch fixes the problem. That'll teach me to spin a patch up while I'm headed
> out the door. I think a cleaner solution for now is just to refactor get_xa_root,
> __get_xa_root, and create_xa_root into one function to simplify the lookup and the
> locking. I think I'll add another step to my patch set that removes the caching of
> xattr_root entirely or creates in on mount, as the priv root is created. The privroot
> must be cached to avoid a deadlock on the fs-root directory's i_mutex, but xattr_root
> was cached as an optimzation. If we need to take privroot->i_mutex every time, there's
> no point in caching it since it will probably be in the dcache anyway.
> 
> -Jeff
> 

Ignore this patch. I missed a spot.

- -Jeff

- --
Jeff Mahoney
SUSE Labs
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org

iD8DBQFGKiEHLPWxlyuTD7IRApRTAJ0WeJzkH7julSus9iqx+LYoAAlFOwCfahu0
4qN7BR/monh7ZcQWZ7Vmz3Y=
=UNNw
-----END PGP SIGNATURE-----

  reply	other threads:[~2007-04-21 14:34 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20070413095219.02075323.akpm@linux-foundation.org>
     [not found] ` <462536B2.5060308@users.sourceforge.net>
     [not found]   ` <c04ebacf0704180152qdc72fcdnd0755dbf070b40d2@mail.gmail.com>
2007-04-18 14:16     ` Fwd: Fw: [2.6.20.4] BUG: dentry xattrs still in use in shrink_dcache_for_umount() with reiserfs Vladimir V. Saveliev
2007-04-18 15:00       ` Jeff Mahoney
2007-04-21  0:07         ` Andrew Morton
2007-04-21  1:45           ` Jeff Mahoney
2007-04-21 13:17             ` Andrea Righi
2007-04-21 14:31               ` Jeff Mahoney
2007-04-21 14:34                 ` Jeff Mahoney [this message]
2007-04-21 15:26                   ` [PATCH] reiserfs: fix xattr root locking/refcount bug Jeff Mahoney
2007-04-21 19:39                     ` Andrew Morton
2007-04-22 10:28                       ` Andrea Righi
2007-04-22 20:49                       ` Jeff Mahoney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=462A2107.6060902@suse.de \
    --to=jeffm@suse.de \
    --cc=a.righi@cineca.it \
    --cc=ak@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=edward@namesys.com \
    --cc=jeffm@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=reiserfs-dev@namesys.com \
    --cc=vs@namesys.com \
    --cc=zam@clusterfs.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.