Cause of patch b35250c, inode->i_io_list will not only be protected by wb->list_lock, but also inode->i_lock. And in that patch, Added some assert for inode->i_lock in some functions except inode_io_list_move_locked. Should complete it to describe the semantics more clearly. Modified comment correspondingly. Signed-off-by: Jchao Sun <sunjunchao2870@xxxxxxxxx> --- fs/fs-writeback.c | 1 + fs/inode.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 591fe9cf1659..5a761b39f36c 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -120,6 +120,7 @@ static bool inode_io_list_move_locked(struct inode *inode, struct list_head *head) { assert_spin_locked(&wb->list_lock); + assert_spin_locked(&inode->i_lock); list_move(&inode->i_io_list, head); diff --git a/fs/inode.c b/fs/inode.c index 9d9b422504d1..bd4da9c5207e 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -27,7 +27,7 @@ * Inode locking rules: * * inode->i_lock protects: - * inode->i_state, inode->i_hash, __iget() + * inode->i_state, inode->i_hash, __iget(), inode->i_io_list * Inode LRU list locks protect: * inode->i_sb->s_inode_lru, inode->i_lru * inode->i_sb->s_inode_list_lock protects: -- 2.17.1