|
@@ -2205,11 +2205,9 @@ static void btrfs_stop_all_workers(struct btrfs_fs_info *fs_info)
|
|
|
btrfs_destroy_workqueue(fs_info->delalloc_workers);
|
|
|
btrfs_destroy_workqueue(fs_info->workers);
|
|
|
btrfs_destroy_workqueue(fs_info->endio_workers);
|
|
|
- btrfs_destroy_workqueue(fs_info->endio_meta_workers);
|
|
|
btrfs_destroy_workqueue(fs_info->endio_raid56_workers);
|
|
|
btrfs_destroy_workqueue(fs_info->endio_repair_workers);
|
|
|
btrfs_destroy_workqueue(fs_info->rmw_workers);
|
|
|
- btrfs_destroy_workqueue(fs_info->endio_meta_write_workers);
|
|
|
btrfs_destroy_workqueue(fs_info->endio_write_workers);
|
|
|
btrfs_destroy_workqueue(fs_info->endio_freespace_worker);
|
|
|
btrfs_destroy_workqueue(fs_info->submit_workers);
|
|
@@ -2219,6 +2217,13 @@ static void btrfs_stop_all_workers(struct btrfs_fs_info *fs_info)
|
|
|
btrfs_destroy_workqueue(fs_info->flush_workers);
|
|
|
btrfs_destroy_workqueue(fs_info->qgroup_rescan_workers);
|
|
|
btrfs_destroy_workqueue(fs_info->extent_workers);
|
|
|
+ /*
|
|
|
+ * Now that all other work queues are destroyed, we can safely destroy
|
|
|
+ * the queues used for metadata I/O, since tasks from those other work
|
|
|
+ * queues can do metadata I/O operations.
|
|
|
+ */
|
|
|
+ btrfs_destroy_workqueue(fs_info->endio_meta_workers);
|
|
|
+ btrfs_destroy_workqueue(fs_info->endio_meta_write_workers);
|
|
|
}
|
|
|
|
|
|
static void free_root_extent_buffers(struct btrfs_root *root)
|