[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <85wobdb3hp.fsf@collabora.com>
Date: Tue, 03 Dec 2019 14:42:10 -0500
From: Gabriel Krisman Bertazi <krisman@...labora.com>
To: Gao Xiang <gaoxiang25@...wei.com>
Cc: Daniel Rosenberg <drosen@...gle.com>,
Theodore Ts'o <tytso@....edu>, <linux-ext4@...r.kernel.org>,
Jaegeuk Kim <jaegeuk@...nel.org>, Chao Yu <chao@...nel.org>,
<linux-f2fs-devel@...ts.sourceforge.net>,
Eric Biggers <ebiggers@...nel.org>,
<linux-fscrypt@...r.kernel.org>,
Alexander Viro <viro@...iv.linux.org.uk>,
Andreas Dilger <adilger.kernel@...ger.ca>,
Jonathan Corbet <corbet@....net>, <linux-doc@...r.kernel.org>,
<linux-kernel@...r.kernel.org>, <linux-fsdevel@...r.kernel.org>,
<kernel-team@...roid.com>
Subject: Re: [PATCH 4/8] vfs: Fold casefolding into vfs
Gao Xiang <gaoxiang25@...wei.com> writes:
> On Mon, Dec 02, 2019 at 09:10:45PM -0800, Daniel Rosenberg wrote:
>> Ext4 and F2fs are both using casefolding, and they, along with any other
>> filesystem that adds the feature, will be using identical dentry_ops.
>> Additionally, those dentry ops interfere with the dentry_ops required
>> for fscrypt once we add support for casefolding and encryption.
>> Moving this into the vfs removes code duplication as well as the
>> complication with encryption.
>>
>> Currently this is pretty close to just moving the existing f2fs/ext4
>> code up a level into the vfs, although there is a lot of room for
>> improvement now.
>>
>> Signed-off-by: Daniel Rosenberg <drosen@...gle.com>
>
> I'm afraid that such vfs modification is unneeded.
>
> Just a quick glance it seems just can be replaced by introducing some
> .d_cmp, .d_hash helpers (or with little modification) and most non-Android
> emulated storage files are not casefolded (even in Android).
>
> "those dentry ops interfere with the dentry_ops required for fscrypt",
> I don't think it's a real diffculty and it could be done with some
> better approach instead.
It would be good to avoid dentry_ops in general for these cases. It
doesn't just interfere with fscrypt, but also overlayfs and others.
The difficulty is that it is not trivial to change dentry_ops after
dentries are already installed in the dcache. Which means that it is
hard to use different dentry_ops for different parts of the filesystem,
for instance when converting a directory to case-insensitive or back
to case-sensitive.
In fact, currently and for case-insensitive at least, we install generic
hooks for the entire case-insensitive filesystem and use it even for
!IS_CASEFOLDED() directories. This breaks overlayfs even if we don't
have a single IS_CASEFOLDED() directory at all, just by having the
superblock flag, we *must* set the dentry_ops, which already breaks
overlayfs.
I think Daniel's approach of moving this into VFS is the simplest way to
actually solve the issue, instead of extending and duplicating a lot of
functionality into filesystem hooks to support the possible mixes of
case-insensitive, overlayfs and fscrypt.
--
Gabriel Krisman Bertazi
Powered by blists - more mailing lists