mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-10 15:19:51 +00:00
ext4: lock i_mutex when truncating orphan inodes
Commit c278531d39 added a warning when ext4_flush_unwritten_io() is called without i_mutex being taken. It had previously not been taken during orphan cleanup since races weren't possible at that point in the mount process, but as a result of this c278531d39, we will now see a kernel WARN_ON in this case. Take the i_mutex in ext4_orphan_cleanup() to suppress this warning. Reported-by: Alexander Beregalov <a.beregalov@gmail.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Reviewed-by: Zheng Liu <wenqing.lz@taobao.com> Cc: stable@vger.kernel.org
This commit is contained in:
parent
d096ad0f79
commit
721e3eba21
@ -2220,7 +2220,9 @@ static void ext4_orphan_cleanup(struct super_block *sb,
|
|||||||
__func__, inode->i_ino, inode->i_size);
|
__func__, inode->i_ino, inode->i_size);
|
||||||
jbd_debug(2, "truncating inode %lu to %lld bytes\n",
|
jbd_debug(2, "truncating inode %lu to %lld bytes\n",
|
||||||
inode->i_ino, inode->i_size);
|
inode->i_ino, inode->i_size);
|
||||||
|
mutex_lock(&inode->i_mutex);
|
||||||
ext4_truncate(inode);
|
ext4_truncate(inode);
|
||||||
|
mutex_unlock(&inode->i_mutex);
|
||||||
nr_truncates++;
|
nr_truncates++;
|
||||||
} else {
|
} else {
|
||||||
ext4_msg(sb, KERN_DEBUG,
|
ext4_msg(sb, KERN_DEBUG,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user