ext4: mark fc as ineligible using an handle in ext4_xattr_set()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Luis Henriques (SUSE) <luis.henriques@xxxxxxxxx>

commit 04e6ce8f06d161399e5afde3df5dcfa9455b4952 upstream.

Calling ext4_fc_mark_ineligible() with a NULL handle is racy and may result
in a fast-commit being done before the filesystem is effectively marked as
ineligible.  This patch moves the call to this function so that an handle
can be used.  If a transaction fails to start, then there's not point in
trying to mark the filesystem as ineligible, and an error will eventually be
returned to user-space.

Suggested-by: Jan Kara <jack@xxxxxxx>
Signed-off-by: Luis Henriques (SUSE) <luis.henriques@xxxxxxxxx>
Reviewed-by: Jan Kara <jack@xxxxxxx>
Link: https://patch.msgid.link/20240923104909.18342-3-luis.henriques@xxxxxxxxx
Signed-off-by: Theodore Ts'o <tytso@xxxxxxx>
Cc: stable@xxxxxxxxxx
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
 fs/ext4/xattr.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/fs/ext4/xattr.c
+++ b/fs/ext4/xattr.c
@@ -2512,6 +2512,8 @@ retry:
 
 		error = ext4_xattr_set_handle(handle, inode, name_index, name,
 					      value, value_len, flags);
+		ext4_fc_mark_ineligible(inode->i_sb, EXT4_FC_REASON_XATTR,
+					handle);
 		error2 = ext4_journal_stop(handle);
 		if (error == -ENOSPC &&
 		    ext4_should_retry_alloc(sb, &retries))
@@ -2519,7 +2521,6 @@ retry:
 		if (error == 0)
 			error = error2;
 	}
-	ext4_fc_mark_ineligible(inode->i_sb, EXT4_FC_REASON_XATTR, NULL);
 
 	return error;
 }


Patches currently in stable-queue which might be from luis.henriques@xxxxxxxxx are

queue-5.15/ext4-mark-fc-as-ineligible-using-an-handle-in-ext4_xattr_set.patch
queue-5.15/ext4-fix-incorrect-tid-assumption-in-ext4_wait_for_tail_page_commit.patch
queue-5.15/ext4-fix-fast-commit-inode-enqueueing-during-a-full-journal-commit.patch
queue-5.15/ext4-fix-incorrect-tid-assumption-in-jbd2_journal_shrink_checkpoint_list.patch
queue-5.15/ext4-fix-incorrect-tid-assumption-in-__jbd2_log_wait_for_space.patch
queue-5.15/ext4-use-handle-to-mark-fc-as-ineligible-in-__track_dentry_update.patch




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux