From: Luis Henriques <luis.henriques@linux.dev>
To: Ben Hutchings <ben@decadent.org.uk>
Cc: Theodore Ts'o <tytso@mit.edu>,
Andreas Dilger <adilger@dilger.ca>,
Harshad Shirwadkar <harshadshirwadkar@gmail.com>,
linux-ext4@vger.kernel.org, 1039883@bugs.debian.org
Subject: Re: [PATCH] ext4: don't track ranges in fast_commit if inode has inlined data
Date: Wed, 19 Jun 2024 08:58:51 +0100 [thread overview]
Message-ID: <87r0ctbbyc.fsf@brahms.olymp> (raw)
In-Reply-To: <47173a890acd8f92bcfa391263f86f73c2d37ec7.camel@decadent.org.uk> (Ben Hutchings's message of "Wed, 19 Jun 2024 00:30:38 +0200")
On Wed 19 Jun 2024 12:30:38 AM +02, Ben Hutchings wrote;
> On Tue, 2024-06-18 at 15:43 +0100, Luis Henriques (SUSE) wrote:
>> When fast-commit needs to track ranges, it has to handle inodes that have
>> inlined data in a different way because ext4_fc_write_inode_data(), in the
>> actual commit path, will attempt to map the required blocks for the range.
>> However, inodes that have inlined data will have it's data stored in
>> inode->i_block and, eventually, in the extended attribute space.
>>
>> Unfortunately, because fast commit doesn't currently support extended
>> attributes, the solution is to mark this commit as ineligible.
>>
>> Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1039883
>> Signed-off-by: Luis Henriques (SUSE) <luis.henriques@linux.dev>
>
> Reported-by: Hervé Werner <dud225@hotmail.com>
> Tested-by: Ben Hutchings <benh@debian.org>
>
Thanks a lot, Ben.
> I think this should also have:
>
> Fixes: 9725958bb75c ("ext4: fast commit may miss tracking unwritten range during ftruncate")
>
> unless you think the problem is even older than that.
If my understanding is correct (hopefully someone will confirm that!), I
think the problem goes further back. That commit just makes it more
likely to be visible, but handling of inlined data is incorrect since the
fast_commit merge. So, I guess that's better to simply add:
Cc: stable@vger.kernel.org
Cheers,
--
Luís
>
> Ben.
>
>> ---
>> fs/ext4/fast_commit.c | 6 ++++++
>> 1 file changed, 6 insertions(+)
>>
>> diff --git a/fs/ext4/fast_commit.c b/fs/ext4/fast_commit.c
>> index 87c009e0c59a..d3a67bc06d10 100644
>> --- a/fs/ext4/fast_commit.c
>> +++ b/fs/ext4/fast_commit.c
>> @@ -649,6 +649,12 @@ void ext4_fc_track_range(handle_t *handle, struct inode *inode, ext4_lblk_t star
>> if (ext4_test_mount_flag(inode->i_sb, EXT4_MF_FC_INELIGIBLE))
>> return;
>>
>> + if (ext4_has_inline_data(inode)) {
>> + ext4_fc_mark_ineligible(inode->i_sb, EXT4_FC_REASON_XATTR,
>> + handle);
>> + return;
>> + }
>> +
>> args.start = start;
>> args.end = end;
>>
>
> --
> Ben Hutchings
> For every complex problem
> there is a solution that is simple, neat, and wrong.
>
next prev parent reply other threads:[~2024-06-19 7:59 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-18 14:43 [PATCH] ext4: don't track ranges in fast_commit if inode has inlined data Luis Henriques (SUSE)
2024-06-18 22:30 ` Ben Hutchings
2024-06-19 7:58 ` Luis Henriques [this message]
2024-06-19 13:47 ` Ben Hutchings
2024-07-11 2:35 ` Theodore Ts'o
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=87r0ctbbyc.fsf@brahms.olymp \
--to=luis.henriques@linux.dev \
--cc=1039883@bugs.debian.org \
--cc=adilger@dilger.ca \
--cc=ben@decadent.org.uk \
--cc=harshadshirwadkar@gmail.com \
--cc=linux-ext4@vger.kernel.org \
--cc=tytso@mit.edu \
/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.