Btrfs: remove wait_ordered_range in btrfs_evict_inode
authorLiu Bo <bo.liu@linux.alibaba.com>
Tue, 11 Sep 2018 22:06:22 +0000 (06:06 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 15 Oct 2018 15:23:31 +0000 (17:23 +0200)
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 are any) and truncated all page cache pages (no dirty pages to
writeback after this step), wait_ordered_range() is just a noop.

Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/inode.c

index f2c38f5..e80304e 100644 (file)
@@ -5362,9 +5362,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);