mirror of https://gitee.com/openkylin/linux.git
ext4: lock i_mutex when truncating orphan inodes
Commitc278531d39
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 thisc278531d39
, 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…
Reference in New Issue