When we delete an inode, btrfs_evict_inode() { truncate_inode_pages_final() truncate_inode_pages_range() lock_page() truncate_cleanup_page() btrfs_invalidatepage() wait_on_page_writeback btrfs_lookup_ordered_range() cancel_dirty_page() unlock_page() ... btrfs_wait_ordered_range() ...
As VFS has called ->invalidatepage() to get all ordered extents done (if there is any) and truncated all page cache pages (no dirty pages to writeback after this step), wait_ordered_range() is just a noop. Reviewed-by: David Sterba <dste...@suse.com> Signed-off-by: Liu Bo <bo....@linux.alibaba.com> --- v2: More details in the description. fs/btrfs/inode.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index ff1d2ed2dc94..d3febc3a6bc0 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -5390,9 +5390,6 @@ void btrfs_evict_inode(struct inode *inode) if (is_bad_inode(inode)) goto no_delete; - /* do we really want it for ->i_nlink > 0 and zero btrfs_root_refs? */ - if (!special_file(inode->i_mode)) - btrfs_wait_ordered_range(inode, 0, (u64)-1); btrfs_free_io_failure_record(BTRFS_I(inode), 0, (u64)-1); -- 1.8.3.1