From: Luis Henriques <luis@igalia.com>
To: Amir Goldstein <amir73il@gmail.com>
Cc: Miklos Szeredi <miklos@szeredi.hu>,
Chen Linxuan <me@black-desk.cn>,
Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>,
fuse-devel@lists.linux.dev, linux-kernel@vger.kernel.org,
linux-kselftest@vger.kernel.org,
Matt Harvey <mharvey@jumptrading.com>,
kernel-dev@igalia.com
Subject: Re: [RFC PATCH v3 6/8] selftests/fuse: add some extra ACL caching tests
Date: Mon, 07 Sep 2026 11:48:31 +0100 [thread overview]
Message-ID: <87ld9dfibk.fsf@wotan.olymp> (raw)
In-Reply-To: <CAOQ4uxhF6qaAxLFt0UP8nBbZTWVVYf_Y7zgL8Lu9xEnJzg=GiA@mail.gmail.com> (Amir Goldstein's message of "Sat, 5 Sep 2026 14:38:24 +0200")
On Sat, Sep 05 2026, Amir Goldstein wrote:
> On Fri, Sep 4, 2026 at 12:38 PM Luis Henriques <luis@igalia.com> wrote:
>>
>> This adds some extra tests to ACL caching:
>> - Verify that reading ACLs results in the expected number of requests
>> being sent user-space, depending on whether cache is enabled or disabled
>> - Verify caching behaviour on some caching invalidation scenarios
>>
>> While there, add test binary to .gitignore.
>>
>> Signed-off-by: Luis Henriques <luis@igalia.com>
>> ---
>> .../selftests/filesystems/fuse/.gitignore | 1 +
>> .../filesystems/fuse/fuse_acl_cache_test.c | 179 ++++++++++++++++++
>> 2 files changed, 180 insertions(+)
>>
>> diff --git a/tools/testing/selftests/filesystems/fuse/.gitignore b/tools/testing/selftests/filesystems/fuse/.gitignore
>> index fb51603fe419..f7f3dd345a50 100644
>> --- a/tools/testing/selftests/filesystems/fuse/.gitignore
>> +++ b/tools/testing/selftests/filesystems/fuse/.gitignore
>> @@ -2,3 +2,4 @@
>> fuse_mnt
>> fusectl_test
>> write_extend_eof_test
>> +fuse_acl_cache_test
>> diff --git a/tools/testing/selftests/filesystems/fuse/fuse_acl_cache_test.c b/tools/testing/selftests/filesystems/fuse/fuse_acl_cache_test.c
>> index c2d6658ff7de..9608a0adb967 100644
>> --- a/tools/testing/selftests/filesystems/fuse/fuse_acl_cache_test.c
>> +++ b/tools/testing/selftests/filesystems/fuse/fuse_acl_cache_test.c
>> @@ -83,6 +83,7 @@ struct daemon_state {
>> uint8_t *acl;
>> size_t acl_size;
>> int getxattr_count;
>> + bool cache;
>> };
>>
>> /*
>> @@ -91,9 +92,17 @@ struct daemon_state {
>> */
>> static struct daemon_state g_ds = {
>> .lock = PTHREAD_MUTEX_INITIALIZER,
>> + .cache = false,
>> };
>>
>> /* ---- FUSE lowlevel callbacks -------------------------------------------- */
>> +static void fs_init(void *userdata, struct fuse_conn_info *conn)
>> +{
>> + pthread_mutex_lock(&g_ds.lock);
>> + if (g_ds.cache)
>> + fuse_set_feature_flag(conn, FUSE_CAP_POSIX_ACL);
>> + pthread_mutex_unlock(&g_ds.lock);
>> +}
>>
>> static void fs_lookup(fuse_req_t req, fuse_ino_t parent, const char *name)
>> {
>> @@ -115,6 +124,8 @@ static void fs_lookup(fuse_req_t req, fuse_ino_t parent, const char *name)
>> e.attr.st_ino = FILE_INO;
>> e.attr.st_mode = S_IFREG | 0644;
>> e.attr.st_nlink = 1;
>> + e.attr.st_uid = getuid();
>> + e.attr.st_gid = getgid();
>> fuse_reply_entry(req, &e);
>> }
>>
>> @@ -175,10 +186,38 @@ static void fs_getxattr(fuse_req_t req, fuse_ino_t ino, const char *name,
>> free(acl);
>> }
>>
>> +static void fs_setxattr(fuse_req_t req, fuse_ino_t ino, const char *name,
>> + const char *value, size_t size, int flags)
>> +{
>> + int ret = 0;
>> + uint8_t *acl;
>> +
>> + if (ino != FILE_INO)
>> + ret = ENOENT;
>> + else if (!strcmp(name, "system.posix_acl_access")) {
>> + acl = malloc(size);
>> + if (acl) {
>> + memcpy(acl, value, size);
>> + pthread_mutex_lock(&g_ds.lock);
>> + if (g_ds.acl)
>> + free(g_ds.acl);
>> + g_ds.acl = acl;
>> + g_ds.acl_size = size;
>> + pthread_mutex_unlock(&g_ds.lock);
>> + } else
>> + ret = ENOMEM;
>> + } else
>> + ret = ENOTSUP;
>> +
>
> I am allergic to mismatching {} in if/else statements.
Ah! Ah! OK, I'll fix that. (And I also admit I'm not consistent with
this, which probably means I'm not allergic :-) )
> I personally think that code will be cleaner with a goto error
> without all these multi nesting levels.
Sure, I'll refactor it accordingly.
Cheers,
--
Luís
next prev parent reply other threads:[~2026-09-07 10:47 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-04 10:39 [RFC PATCH v3 0/8] fuse: caches documentation and testing Luis Henriques
2026-09-04 10:39 ` [RFC PATCH v3 1/8] Documentation: fuse: add document on caches being used by FUSE Luis Henriques
2026-09-05 21:04 ` Amir Goldstein
2026-09-07 10:38 ` Luis Henriques
2026-09-04 10:39 ` [RFC PATCH v3 2/8] selftests/fuse: convert fusectl test to fuse3 Luis Henriques
2026-09-04 10:39 ` [RFC PATCH v3 3/8] selftests/fuse: check that fusectlfs is mounted Luis Henriques
2026-09-05 13:59 ` Amir Goldstein
2026-09-04 10:39 ` [RFC PATCH v3 4/8] selftests/fuse: factor-out test fixture setup/teardown Luis Henriques
2026-09-05 12:45 ` Amir Goldstein
2026-09-07 10:44 ` Luis Henriques
2026-09-07 11:38 ` Amir Goldstein
2026-09-04 10:39 ` [RFC PATCH v3 5/8] selftests/fuse: use dynamically allocated memory to store ACLs Luis Henriques
2026-09-05 14:00 ` Amir Goldstein
2026-09-04 10:39 ` [RFC PATCH v3 6/8] selftests/fuse: add some extra ACL caching tests Luis Henriques
2026-09-05 12:38 ` Amir Goldstein
2026-09-07 10:48 ` Luis Henriques [this message]
2026-09-04 10:39 ` [RFC PATCH v3 7/8] selftests/fuse: add fuse symlink caching test Luis Henriques
2026-09-05 12:32 ` Amir Goldstein
2026-09-07 10:58 ` Luis Henriques
2026-09-04 10:39 ` [RFC PATCH v3 8/8] selftests/fuse: add fuse readdir " Luis Henriques
2026-09-05 14:11 ` Amir Goldstein
2026-09-07 10:55 ` Luis Henriques
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=87ld9dfibk.fsf@wotan.olymp \
--to=luis@igalia.com \
--cc=amir73il@gmail.com \
--cc=corbet@lwn.net \
--cc=fuse-devel@lists.linux.dev \
--cc=kernel-dev@igalia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=me@black-desk.cn \
--cc=mharvey@jumptrading.com \
--cc=miklos@szeredi.hu \
--cc=skhan@linuxfoundation.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 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.