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@xxxxxxxxx> > > Reported-by: Hervé Werner <dud225@xxxxxxxxxxx> > Tested-by: Ben Hutchings <benh@xxxxxxxxxx> > 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@xxxxxxxxxxxxxxx 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. >