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

Commit 5443be45 authored by Chris Mason's avatar Chris Mason
Browse files

Btrfs: Give all the worker threads descriptive names

parent 777e6bd7
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -153,7 +153,7 @@ int btrfs_stop_workers(struct btrfs_workers *workers)
/*
 * simple init on struct btrfs_workers
 */
void btrfs_init_workers(struct btrfs_workers *workers, int max)
void btrfs_init_workers(struct btrfs_workers *workers, char *name, int max)
{
	workers->num_workers = 0;
	INIT_LIST_HEAD(&workers->worker_list);
@@ -161,6 +161,7 @@ void btrfs_init_workers(struct btrfs_workers *workers, int max)
	spin_lock_init(&workers->lock);
	workers->max_workers = max;
	workers->idle_thresh = 32;
	workers->name = name;
}

/*
@@ -184,7 +185,9 @@ int btrfs_start_workers(struct btrfs_workers *workers, int num_workers)
		INIT_LIST_HEAD(&worker->worker_list);
		spin_lock_init(&worker->lock);
		atomic_set(&worker->num_pending, 0);
		worker->task = kthread_run(worker_loop, worker, "btrfs");
		worker->task = kthread_run(worker_loop, worker,
					   "btrfs-%s-%d", workers->name,
					   workers->num_workers + i);
		worker->workers = workers;
		if (IS_ERR(worker->task)) {
			kfree(worker);
+4 −1
Original line number Diff line number Diff line
@@ -69,11 +69,14 @@ struct btrfs_workers {

	/* lock for finding the next worker thread to queue on */
	spinlock_t lock;

	/* extra name for this worker */
	char *name;
};

int btrfs_queue_worker(struct btrfs_workers *workers, struct btrfs_work *work);
int btrfs_start_workers(struct btrfs_workers *workers, int num_workers);
int btrfs_stop_workers(struct btrfs_workers *workers);
void btrfs_init_workers(struct btrfs_workers *workers, int max);
void btrfs_init_workers(struct btrfs_workers *workers, char *name, int max);
int btrfs_requeue_work(struct btrfs_work *work);
#endif
+15 −7
Original line number Diff line number Diff line
@@ -492,11 +492,11 @@ static int __btree_submit_bio_hook(struct inode *inode, int rw, struct bio *bio,

	/*
	 * when we're called for a write, we're already in the async
	 * submission context.  Just jump ingo btrfs_map_bio
	 * submission context.  Just jump into btrfs_map_bio
	 */
	if (rw & (1 << BIO_RW)) {
		return btrfs_map_bio(BTRFS_I(inode)->root, rw, bio,
				     mirror_num, 0);
				     mirror_num, 1);
	}

	/*
@@ -528,6 +528,12 @@ static int btree_writepage(struct page *page, struct writeback_control *wbc)
{
	struct extent_io_tree *tree;
	tree = &BTRFS_I(page->mapping->host)->io_tree;

	if (current->flags & PF_MEMALLOC) {
		redirty_page_for_writepage(wbc, page);
		unlock_page(page);
		return 0;
	}
	return extent_write_full_page(tree, page, btree_get_extent, wbc);
}

@@ -1363,8 +1369,9 @@ struct btrfs_root *open_ctree(struct super_block *sb,
	 * queue work function gets called at interrupt time, and so it
	 * cannot dynamically grow.
	 */
	btrfs_init_workers(&fs_info->workers, fs_info->thread_pool_size);
	btrfs_init_workers(&fs_info->submit_workers,
	btrfs_init_workers(&fs_info->workers, "worker",
			   fs_info->thread_pool_size);
	btrfs_init_workers(&fs_info->submit_workers, "submit",
			   min_t(u64, fs_devices->num_devices,
			   fs_info->thread_pool_size));

@@ -1374,9 +1381,10 @@ struct btrfs_root *open_ctree(struct super_block *sb,
	 */
	fs_info->submit_workers.idle_thresh = 64;

	btrfs_init_workers(&fs_info->fixup_workers, 1);
	btrfs_init_workers(&fs_info->endio_workers, fs_info->thread_pool_size);
	btrfs_init_workers(&fs_info->endio_write_workers,
	btrfs_init_workers(&fs_info->fixup_workers, "fixup", 1);
	btrfs_init_workers(&fs_info->endio_workers, "endio",
			   fs_info->thread_pool_size);
	btrfs_init_workers(&fs_info->endio_write_workers, "endio-write",
			   fs_info->thread_pool_size);

	/*