Josef Bacik
2013-Oct-16 17:56 UTC
[PATCH] Btrfs: stop all workers after we free block groups
Stefan was hitting a panic in the async worker stuff because we had outstanding read bios while we were stopping the worker threads. You could reproduce this easily if you mount -o nospace_cache and ran generic/273. This is because the caching thread stuff is still going and we were stopping all the worker threads. We need to stop the workers after this work is done, and the free block groups code will wait for all the caching threads to stop first so we don''t run into this problem. With this patch we no longer panic. Thanks, Reported-by: Stefan Behrens <sbehrens@giantdisaster.de> Signed-off-by: Josef Bacik <jbacik@fusionio.com> --- fs/btrfs/disk-io.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 419968e..b0ea9f4 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -3637,12 +3637,12 @@ int close_ctree(struct btrfs_root *root) percpu_counter_sum(&fs_info->delalloc_bytes)); } - btrfs_stop_all_workers(fs_info); - del_fs_roots(fs_info); btrfs_free_block_groups(fs_info); + btrfs_stop_all_workers(fs_info); + free_root_pointers(fs_info, 1); iput(fs_info->btree_inode); -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Zach Brown
2013-Oct-16 18:14 UTC
Re: [PATCH] Btrfs: stop all workers after we free block groups
On Wed, Oct 16, 2013 at 01:56:50PM -0400, Josef Bacik wrote:> Stefan was hitting a panic in the async worker stuff because we had outstanding > read bios while we were stopping the worker threads.> fs/btrfs/disk-io.c | 4 ++--Seems like a nice candidate for stable@, no? - z -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html