Since btrfs sysfs interfaces can start new transaction, we need to do it before transaction thread cleanup.
Signed-off-by: Qu Wenruo <[email protected]> --- v5: Newly introduced. --- fs/btrfs/disk-io.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index f4d168d..7c185a0 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -3630,6 +3630,12 @@ void close_ctree(struct btrfs_root *root) fs_info->closing = 1; smp_mb(); + /* + * Remove btrfs sysfs interfaces first, + * since it can start new transaction. + */ + btrfs_sysfs_remove_one(fs_info); + /* wait for the uuid_scan task to finish */ down(&fs_info->uuid_tree_rescan_sem); /* avoid complains from lockdep et al., set sem back to initial state */ @@ -3673,8 +3679,6 @@ void close_ctree(struct btrfs_root *root) percpu_counter_sum(&fs_info->delalloc_bytes)); } - btrfs_sysfs_remove_one(fs_info); - btrfs_free_fs_roots(fs_info); btrfs_put_block_group_cache(fs_info); -- 2.2.2 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
