Skip to content

Commit

Permalink
Btrfs: put the block group cache after we commit the super
Browse files Browse the repository at this point in the history
In moving some enospc stuff around I noticed that when we unmount we are often
evicting the free space cache inodes before we do our last commit.  This isn't
bad, but it makes us constantly have to re-read the inodes back.  So instead
don't evict the cache until after we do our last commit, this will make things a
little less crappy and makes a future enospc change work properly.  Thanks,

Signed-off-by: Josef Bacik <josef@redhat.com>
  • Loading branch information
Josef Bacik committed Oct 19, 2011
1 parent 4a33854 commit 300e4f8
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
4 changes: 2 additions & 2 deletions fs/btrfs/disk-io.c
Original file line number Diff line number Diff line change
Expand Up @@ -2543,8 +2543,6 @@ int close_ctree(struct btrfs_root *root)
/* clear out the rbtree of defraggable inodes */
btrfs_run_defrag_inodes(root->fs_info);

btrfs_put_block_group_cache(fs_info);

/*
* Here come 2 situations when btrfs is broken to flip readonly:
*
Expand All @@ -2570,6 +2568,8 @@ int close_ctree(struct btrfs_root *root)
printk(KERN_ERR "btrfs: commit super ret %d\n", ret);
}

btrfs_put_block_group_cache(fs_info);

kthread_stop(root->fs_info->transaction_kthread);
kthread_stop(root->fs_info->cleaner_kthread);

Expand Down
2 changes: 1 addition & 1 deletion fs/btrfs/free-space-cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ struct inode *lookup_free_space_inode(struct btrfs_root *root,
block_group->disk_cache_state = BTRFS_DC_CLEAR;
}

if (!btrfs_fs_closing(root->fs_info)) {
if (!block_group->iref) {
block_group->inode = igrab(inode);
block_group->iref = 1;
}
Expand Down

0 comments on commit 300e4f8

Please sign in to comment.