mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-23 23:21:46 +00:00
Btrfs: Give all the worker threads descriptive names
Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
777e6bd706
commit
5443be45f5
3 changed files with 24 additions and 10 deletions
|
@ -153,7 +153,7 @@ int btrfs_stop_workers(struct btrfs_workers *workers)
|
||||||
/*
|
/*
|
||||||
* simple init on struct btrfs_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;
|
workers->num_workers = 0;
|
||||||
INIT_LIST_HEAD(&workers->worker_list);
|
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);
|
spin_lock_init(&workers->lock);
|
||||||
workers->max_workers = max;
|
workers->max_workers = max;
|
||||||
workers->idle_thresh = 32;
|
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);
|
INIT_LIST_HEAD(&worker->worker_list);
|
||||||
spin_lock_init(&worker->lock);
|
spin_lock_init(&worker->lock);
|
||||||
atomic_set(&worker->num_pending, 0);
|
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;
|
worker->workers = workers;
|
||||||
if (IS_ERR(worker->task)) {
|
if (IS_ERR(worker->task)) {
|
||||||
kfree(worker);
|
kfree(worker);
|
||||||
|
|
|
@ -69,11 +69,14 @@ struct btrfs_workers {
|
||||||
|
|
||||||
/* lock for finding the next worker thread to queue on */
|
/* lock for finding the next worker thread to queue on */
|
||||||
spinlock_t lock;
|
spinlock_t lock;
|
||||||
|
|
||||||
|
/* extra name for this worker */
|
||||||
|
char *name;
|
||||||
};
|
};
|
||||||
|
|
||||||
int btrfs_queue_worker(struct btrfs_workers *workers, struct btrfs_work *work);
|
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_start_workers(struct btrfs_workers *workers, int num_workers);
|
||||||
int btrfs_stop_workers(struct btrfs_workers *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);
|
int btrfs_requeue_work(struct btrfs_work *work);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -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
|
* 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)) {
|
if (rw & (1 << BIO_RW)) {
|
||||||
return btrfs_map_bio(BTRFS_I(inode)->root, rw, bio,
|
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;
|
struct extent_io_tree *tree;
|
||||||
tree = &BTRFS_I(page->mapping->host)->io_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);
|
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
|
* queue work function gets called at interrupt time, and so it
|
||||||
* cannot dynamically grow.
|
* cannot dynamically grow.
|
||||||
*/
|
*/
|
||||||
btrfs_init_workers(&fs_info->workers, fs_info->thread_pool_size);
|
btrfs_init_workers(&fs_info->workers, "worker",
|
||||||
btrfs_init_workers(&fs_info->submit_workers,
|
fs_info->thread_pool_size);
|
||||||
|
btrfs_init_workers(&fs_info->submit_workers, "submit",
|
||||||
min_t(u64, fs_devices->num_devices,
|
min_t(u64, fs_devices->num_devices,
|
||||||
fs_info->thread_pool_size));
|
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;
|
fs_info->submit_workers.idle_thresh = 64;
|
||||||
|
|
||||||
btrfs_init_workers(&fs_info->fixup_workers, 1);
|
btrfs_init_workers(&fs_info->fixup_workers, "fixup", 1);
|
||||||
btrfs_init_workers(&fs_info->endio_workers, fs_info->thread_pool_size);
|
btrfs_init_workers(&fs_info->endio_workers, "endio",
|
||||||
btrfs_init_workers(&fs_info->endio_write_workers,
|
fs_info->thread_pool_size);
|
||||||
|
btrfs_init_workers(&fs_info->endio_write_workers, "endio-write",
|
||||||
fs_info->thread_pool_size);
|
fs_info->thread_pool_size);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue