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);
|
||||
jbd_debug(2, "truncating inode %lu to %lld bytes\n",
|
||||
inode->i_ino, inode->i_size);
|
||||
mutex_lock(&inode->i_mutex);
|
||||
ext4_truncate(inode);
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
nr_truncates++;
|
||||
} else {
|
||||
ext4_msg(sb, KERN_DEBUG,
|
||||
|
|
Loading…
Reference in New Issue