ext4: mark fc as ineligible using an handle in ext4_xattr_set()
commit 04e6ce8f06 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@suse.cz>
Signed-off-by: Luis Henriques (SUSE) <luis.henriques@linux.dev>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/20240923104909.18342-3-luis.henriques@linux.dev
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Cc: stable@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
c5771f1c48
commit
89bbc55d6b
+2
-1
@@ -2554,6 +2554,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))
|
||||
@@ -2561,7 +2563,6 @@ retry:
|
||||
if (error == 0)
|
||||
error = error2;
|
||||
}
|
||||
ext4_fc_mark_ineligible(inode->i_sb, EXT4_FC_REASON_XATTR, NULL);
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user