From: Al Viro <viro@ZenIV.linux.org.uk>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Christoph Hellwig <hch@lst.de>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>
Subject: Re: [PATCH] vfs: move ACL cache lookup into generic code
Date: Sat, 23 Jul 2011 08:47:22 +0100 [thread overview]
Message-ID: <20110723074722.GD24703@ZenIV.linux.org.uk> (raw)
In-Reply-To: <20110723032944.GA24703@ZenIV.linux.org.uk>
On Sat, Jul 23, 2011 at 04:29:44AM +0100, Al Viro wrote:
> OK, unless there are serious objections, I
> * apply Linus' patch as-is
> * fix that ocfs2 leak
> * replace posix_acl_..._masq() with saner helpers (take original
> acl + other arguments, return modified clone or ERR_PTR) and kill open-coded
> instances...
Done (along with 9p leak fixes). NOTE: this is completely untested.
posix_acl_clone()/posix_acl_create_masq()/posix_acl_chmod_masq() all
became static in fs/posix_acl.c; replacement functions are
posix_acl_create() and posix_acl_chmod(). All callers converted, with
about a hundred lines of boilerplates gone.
And yes, it's pure copy-on-write. The objects are refcounted, shared a lot
and the only primitives that did modifications had been *too* primitive -
their callers all started with creating a copy, then modifying it, then
letting somebody see the result.
Conclusion: that's an obvious free-by-RCU fodder. I have not done that yet,
but it should be trivial to add. posix_acl_release() would, instead of
kfree(), do kfree_rcu() (and we'd need to add rcu_head to struct posix_acl).
I'm not sure if merging the copying into ..._masq() would be worth doing.
posix_acl_clone() is basically kmemdup() and ..._masq() is a loop over all
array elements, with switch by element tag, modifying some of them. Might
be worth merging with copying the elements... Hell knows.
Anyway, that'll have to wait for tomorrow; I'm going down right now. This
stuff (plus Tim's "mount lock scalability for internal mounts" patch) is
in #untested in usual place. Comments/testing/etc. are welcome...
next prev parent reply other threads:[~2011-07-23 7:47 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-22 17:37 VFS pathname walking cleanups (i_op and ACL access) Linus Torvalds
2011-07-22 17:37 ` [PATCH 1/2] VFS: Cut down inode->i_op->xyz accesses in path walking Linus Torvalds
2011-07-22 17:47 ` Christoph Hellwig
2011-07-22 23:40 ` Al Viro
2011-07-22 23:54 ` Linus Torvalds
2011-07-23 3:55 ` [PATCH] " Linus Torvalds
2011-07-23 13:35 ` Christoph Hellwig
2011-07-23 14:46 ` Al Viro
2011-07-23 14:51 ` Christoph Hellwig
2011-07-23 15:45 ` Linus Torvalds
[not found] ` <alpine.LFD.2.02.1107251852220.13796@i5.linux-foundation.org>
2011-07-26 3:05 ` Al Viro
2011-07-26 3:23 ` Linus Torvalds
2011-07-26 18:41 ` Al Viro
2011-07-26 18:45 ` Linus Torvalds
2011-08-07 6:06 ` Linus Torvalds
2011-08-07 6:51 ` Al Viro
2011-08-07 23:43 ` Linus Torvalds
2011-07-22 17:40 ` VFS pathname walking cleanups (i_op and ACL access) Christoph Hellwig
2011-07-22 17:45 ` [PATCH 2/2] vfs: move ACL cache lookup into generic code Linus Torvalds
2011-07-22 17:50 ` Christoph Hellwig
2011-07-22 17:54 ` Linus Torvalds
2011-07-23 2:34 ` [PATCH] " Linus Torvalds
2011-07-23 3:29 ` Al Viro
2011-07-23 3:42 ` Linus Torvalds
2011-07-23 4:31 ` Al Viro
2011-07-23 6:06 ` Al Viro
2011-07-25 8:15 ` Aneesh Kumar K.V
2011-07-25 8:16 ` Aneesh Kumar K.V
2011-07-23 7:47 ` Al Viro [this message]
2011-07-23 14:50 ` Christoph Hellwig
2011-07-23 15:32 ` Al Viro
2011-07-23 17:02 ` Al Viro
2011-07-23 17:31 ` Linus Torvalds
2011-07-23 18:20 ` Al Viro
2011-07-23 18:29 ` Linus Torvalds
2011-07-23 21:53 ` Al Viro
2011-07-23 22:38 ` Al Viro
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=20110723074722.GD24703@ZenIV.linux.org.uk \
--to=viro@zeniv.linux.org.uk \
--cc=hch@lst.de \
--cc=linux-fsdevel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).