From: Gabriel Krisman Bertazi <krisman@suse.de>
To: Eric Biggers <ebiggers@kernel.org>
Cc: viro@zeniv.linux.org.uk, jaegeuk@kernel.org, tytso@mit.edu,
linux-ext4@vger.kernel.org,
linux-f2fs-devel@lists.sourceforge.net,
linux-fsdevel@vger.kernel.org, amir73il@gmail.com
Subject: Re: [PATCH v3 04/10] fscrypt: Drop d_revalidate once the key is added
Date: Mon, 29 Jan 2024 16:34:07 -0300 [thread overview]
Message-ID: <87zfwo2ats.fsf@mailhost.krisman.be> (raw)
In-Reply-To: <20240127071742.GE11935@sol.localdomain> (Eric Biggers's message of "Fri, 26 Jan 2024 23:17:42 -0800")
Eric Biggers <ebiggers@kernel.org> writes:
> On Thu, Jan 25, 2024 at 05:20:56PM -0300, Gabriel Krisman Bertazi wrote:
>> Eric Biggers <ebiggers@kernel.org> writes:
>>
>> > On Fri, Jan 19, 2024 at 03:47:36PM -0300, Gabriel Krisman Bertazi wrote:
>> >> /*
>> >> * When d_splice_alias() moves a directory's no-key alias to its plaintext alias
>> >> * as a result of the encryption key being added, DCACHE_NOKEY_NAME must be
>> >> * cleared. Note that we don't have to support arbitrary moves of this flag
>> >> * because fscrypt doesn't allow no-key names to be the source or target of a
>> >> * rename().
>> >> */
>> >> static inline void fscrypt_handle_d_move(struct dentry *dentry)
>> >> {
>> >> dentry->d_flags &= ~DCACHE_NOKEY_NAME;
>> >> +
>> >> + /*
>> >> + * Save the d_revalidate call cost during VFS operations. We
>> >> + * can do it because, when the key is available, the dentry
>> >> + * can't go stale and the key won't go away without eviction.
>> >> + */
>> >> + if (dentry->d_op && dentry->d_op->d_revalidate == fscrypt_d_revalidate)
>> >> + dentry->d_flags &= ~DCACHE_OP_REVALIDATE;
>> >> }
>> >
>> > Is there any way to optimize this further for the case where fscrypt is not
>> > being used? This is called unconditionally from d_move(). I've generally been
>> > trying to avoid things like this where the fscrypt support slows things down for
>> > everyone even when they're not using the feature.
>>
>> The problem would be figuring out whether the filesystem has fscrypt
>> enabled. I think we can rely on sb->s_cop always being set:
>>
>> if (sb->s_cop)
>> fscrypt_handle_d_move(dentry);
>>
>> What do you think?
>
> That's better, I just wonder if there's an even better way. Do you need to do
> this for dentries that don't have DCACHE_NOKEY_NAME set? If not, it would be
> more efficient to test for DCACHE_NOKEY_NAME before clearing the flags.
I like that. We don't need it for dentries without DCACHE_NOKEY_NAME,
because those dentries have the d_revalidate disabled at lookup-time.
I raced my v4 with your comment, but I'll spin a v5 folding in this
suggestion shortly.
--
Gabriel Krisman Bertazi
WARNING: multiple messages have this Message-ID (diff)
From: Gabriel Krisman Bertazi <krisman@suse.de>
To: Eric Biggers <ebiggers@kernel.org>
Cc: tytso@mit.edu, amir73il@gmail.com,
linux-f2fs-devel@lists.sourceforge.net, viro@zeniv.linux.org.uk,
linux-fsdevel@vger.kernel.org, jaegeuk@kernel.org,
linux-ext4@vger.kernel.org
Subject: Re: [f2fs-dev] [PATCH v3 04/10] fscrypt: Drop d_revalidate once the key is added
Date: Mon, 29 Jan 2024 16:34:07 -0300 [thread overview]
Message-ID: <87zfwo2ats.fsf@mailhost.krisman.be> (raw)
In-Reply-To: <20240127071742.GE11935@sol.localdomain> (Eric Biggers's message of "Fri, 26 Jan 2024 23:17:42 -0800")
Eric Biggers <ebiggers@kernel.org> writes:
> On Thu, Jan 25, 2024 at 05:20:56PM -0300, Gabriel Krisman Bertazi wrote:
>> Eric Biggers <ebiggers@kernel.org> writes:
>>
>> > On Fri, Jan 19, 2024 at 03:47:36PM -0300, Gabriel Krisman Bertazi wrote:
>> >> /*
>> >> * When d_splice_alias() moves a directory's no-key alias to its plaintext alias
>> >> * as a result of the encryption key being added, DCACHE_NOKEY_NAME must be
>> >> * cleared. Note that we don't have to support arbitrary moves of this flag
>> >> * because fscrypt doesn't allow no-key names to be the source or target of a
>> >> * rename().
>> >> */
>> >> static inline void fscrypt_handle_d_move(struct dentry *dentry)
>> >> {
>> >> dentry->d_flags &= ~DCACHE_NOKEY_NAME;
>> >> +
>> >> + /*
>> >> + * Save the d_revalidate call cost during VFS operations. We
>> >> + * can do it because, when the key is available, the dentry
>> >> + * can't go stale and the key won't go away without eviction.
>> >> + */
>> >> + if (dentry->d_op && dentry->d_op->d_revalidate == fscrypt_d_revalidate)
>> >> + dentry->d_flags &= ~DCACHE_OP_REVALIDATE;
>> >> }
>> >
>> > Is there any way to optimize this further for the case where fscrypt is not
>> > being used? This is called unconditionally from d_move(). I've generally been
>> > trying to avoid things like this where the fscrypt support slows things down for
>> > everyone even when they're not using the feature.
>>
>> The problem would be figuring out whether the filesystem has fscrypt
>> enabled. I think we can rely on sb->s_cop always being set:
>>
>> if (sb->s_cop)
>> fscrypt_handle_d_move(dentry);
>>
>> What do you think?
>
> That's better, I just wonder if there's an even better way. Do you need to do
> this for dentries that don't have DCACHE_NOKEY_NAME set? If not, it would be
> more efficient to test for DCACHE_NOKEY_NAME before clearing the flags.
I like that. We don't need it for dentries without DCACHE_NOKEY_NAME,
because those dentries have the d_revalidate disabled at lookup-time.
I raced my v4 with your comment, but I'll spin a v5 folding in this
suggestion shortly.
--
Gabriel Krisman Bertazi
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
next prev parent reply other threads:[~2024-01-29 19:34 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-19 18:47 [PATCH v3 00/10] Set casefold/fscrypt dentry operations through sb->s_d_op Gabriel Krisman Bertazi
2024-01-19 18:47 ` [f2fs-dev] " Gabriel Krisman Bertazi
2024-01-19 18:47 ` [PATCH v3 01/10] ovl: Reject mounting case-insensitive filesystems Gabriel Krisman Bertazi
2024-01-19 18:47 ` [f2fs-dev] " Gabriel Krisman Bertazi
2024-01-25 2:51 ` Eric Biggers
2024-01-25 2:51 ` [f2fs-dev] " Eric Biggers
2024-01-25 16:55 ` Gabriel Krisman Bertazi
2024-01-25 16:55 ` [f2fs-dev] " Gabriel Krisman Bertazi
2024-01-27 7:08 ` Eric Biggers
2024-01-27 7:08 ` [f2fs-dev] " Eric Biggers
2024-01-19 18:47 ` [PATCH v3 02/10] fscrypt: Share code between functions that prepare lookup Gabriel Krisman Bertazi
2024-01-19 18:47 ` [f2fs-dev] " Gabriel Krisman Bertazi
2024-01-25 3:05 ` Eric Biggers
2024-01-25 3:05 ` [f2fs-dev] " Eric Biggers
2024-01-25 20:18 ` Gabriel Krisman Bertazi
2024-01-25 20:18 ` [f2fs-dev] " Gabriel Krisman Bertazi
2024-01-19 18:47 ` [PATCH v3 03/10] fscrypt: Drop d_revalidate for valid dentries during lookup Gabriel Krisman Bertazi
2024-01-19 18:47 ` [f2fs-dev] " Gabriel Krisman Bertazi
2024-01-19 18:47 ` [PATCH v3 04/10] fscrypt: Drop d_revalidate once the key is added Gabriel Krisman Bertazi
2024-01-19 18:47 ` [f2fs-dev] " Gabriel Krisman Bertazi
2024-01-25 3:12 ` Eric Biggers
2024-01-25 3:12 ` [f2fs-dev] " Eric Biggers
2024-01-25 20:20 ` Gabriel Krisman Bertazi
2024-01-25 20:20 ` [f2fs-dev] " Gabriel Krisman Bertazi
2024-01-27 7:17 ` Eric Biggers
2024-01-27 7:17 ` [f2fs-dev] " Eric Biggers
2024-01-29 19:34 ` Gabriel Krisman Bertazi [this message]
2024-01-29 19:34 ` Gabriel Krisman Bertazi
2024-01-19 18:47 ` [PATCH v3 05/10] libfs: Merge encrypted_ci_dentry_ops and ci_dentry_ops Gabriel Krisman Bertazi
2024-01-19 18:47 ` [f2fs-dev] " Gabriel Krisman Bertazi
2024-01-19 18:47 ` [PATCH v3 06/10] libfs: Add helper to choose dentry operations at mount Gabriel Krisman Bertazi
2024-01-19 18:47 ` [f2fs-dev] " Gabriel Krisman Bertazi
2024-01-25 3:13 ` Eric Biggers
2024-01-25 3:13 ` [f2fs-dev] " Eric Biggers
2024-01-19 18:47 ` [PATCH v3 07/10] ext4: Configure dentry operations at dentry-creation time Gabriel Krisman Bertazi
2024-01-19 18:47 ` [f2fs-dev] " Gabriel Krisman Bertazi
2024-01-19 18:47 ` [PATCH v3 08/10] f2fs: " Gabriel Krisman Bertazi
2024-01-19 18:47 ` [f2fs-dev] " Gabriel Krisman Bertazi
2024-01-19 18:47 ` [PATCH v3 09/10] ubifs: " Gabriel Krisman Bertazi
2024-01-19 18:47 ` [f2fs-dev] " Gabriel Krisman Bertazi
2024-01-19 18:47 ` [PATCH v3 10/10] libfs: Drop generic_set_encrypted_ci_d_ops Gabriel Krisman Bertazi
2024-01-19 18:47 ` [f2fs-dev] " Gabriel Krisman Bertazi
-- strict thread matches above, loose matches on Subject: below --
2024-01-11 22:58 [PATCH v3 00/10] Set casefold/fscrypt dentry operations through sb->s_d_op Gabriel Krisman Bertazi
2024-01-11 22:58 ` [PATCH v3 04/10] fscrypt: Drop d_revalidate once the key is added Gabriel Krisman Bertazi
2024-01-18 8:23 ` kernel test robot
2024-01-18 18:58 ` Gabriel Krisman Bertazi
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=87zfwo2ats.fsf@mailhost.krisman.be \
--to=krisman@suse.de \
--cc=amir73il@gmail.com \
--cc=ebiggers@kernel.org \
--cc=jaegeuk@kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-fsdevel@vger.kernel.org \
--cc=tytso@mit.edu \
--cc=viro@zeniv.linux.org.uk \
/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.