Re: Re: [PATCH] fuse: cache POSIX ACLs when setting them
From: Horst Birthelmer
Date: Wed Jul 01 2026 - 07:50:35 EST
On Wed, Jul 01, 2026 at 01:41:22PM +0200, Amir Goldstein wrote:
> On Wed, Jul 1, 2026 at 1:05 PM Luis Henriques <luis@xxxxxxxxxx> wrote:
> >
> > When setting an ACL in an inode we can immediately add it to the cache.
> > This is a small optimisation, as currently an ACL is only added to the
> > cache when reading it again, which involves an extra GETXATTR hop into
> > user-space.
> >
> > Signed-off-by: Luis Henriques <luis@xxxxxxxxxx>
> > ---
> > fs/fuse/acl.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/fs/fuse/acl.c b/fs/fuse/acl.c
> > index 31fb50e16aed..c2584bb75ec7 100644
> > --- a/fs/fuse/acl.c
> > +++ b/fs/fuse/acl.c
> > @@ -155,6 +155,8 @@ int fuse_set_acl(struct mnt_idmap *idmap, struct dentry *dentry,
> > */
> > forget_all_cached_acls(inode);
> > fuse_invalidate_attr(inode);
> > + if (!ret)
> > + set_cached_acl(inode, type, acl);
>
> This is undoing what forget_all_cached_acls() explicitly tries to do.
> I think the reason is that kernel code cannot assume the server did
> not modify ACL before storing them, not sure, but NFS does the same thing
> with nfs_zap_acl_cache().
>
> Thanks,
> Amir.
>
I just thought it would be a good idea to save us a trip to user space.
Horst