Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 632dd772 authored by Arne Jansen's avatar Arne Jansen
Browse files

btrfs: reinitialize scrub workers



Scrub starts the workers each time a scrub starts and stops them after it
finished. This patch adds an initialization for the workers before each
start, otherwise the workers behave strangely.

Signed-off-by: default avatarArne Jansen <sensille@gmx.net>
parent 8c51032f
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -1668,8 +1668,6 @@ struct btrfs_root *open_ctree(struct super_block *sb,
	init_waitqueue_head(&fs_info->scrub_pause_wait);
	init_rwsem(&fs_info->scrub_super_lock);
	fs_info->scrub_workers_refcnt = 0;
	btrfs_init_workers(&fs_info->scrub_workers, "scrub",
			   fs_info->thread_pool_size, &fs_info->generic_worker);

	sb->s_blocksize = 4096;
	sb->s_blocksize_bits = blksize_bits(4096);
+5 −1
Original line number Diff line number Diff line
@@ -1166,8 +1166,12 @@ static noinline_for_stack int scrub_workers_get(struct btrfs_root *root)
	struct btrfs_fs_info *fs_info = root->fs_info;

	mutex_lock(&fs_info->scrub_lock);
	if (fs_info->scrub_workers_refcnt == 0)
	if (fs_info->scrub_workers_refcnt == 0) {
		btrfs_init_workers(&fs_info->scrub_workers, "scrub",
			   fs_info->thread_pool_size, &fs_info->generic_worker);
		fs_info->scrub_workers.idle_thresh = 4;
		btrfs_start_workers(&fs_info->scrub_workers, 1);
	}
	++fs_info->scrub_workers_refcnt;
	mutex_unlock(&fs_info->scrub_lock);