mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-22 23:04:43 +00:00
btrfs: plumb fs_info into btrfs_work
In order to provide an fsid for trace events, we'll need a btrfs_fs_info pointer. The most lightweight way to do that for btrfs_work structures is to associate it with the __btrfs_workqueue structure. Each queued btrfs_work structure has a workqueue associated with it, so that's a natural fit. It's a privately defined structures, so we add accessors to retrieve the fs_info pointer. Signed-off-by: Jeff Mahoney <jeffm@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
9f8d49095b
commit
cb001095ca
4 changed files with 63 additions and 31 deletions
|
@ -2310,17 +2310,19 @@ static int btrfs_init_workqueues(struct btrfs_fs_info *fs_info,
|
|||
unsigned int flags = WQ_MEM_RECLAIM | WQ_FREEZABLE | WQ_UNBOUND;
|
||||
|
||||
fs_info->workers =
|
||||
btrfs_alloc_workqueue("worker", flags | WQ_HIGHPRI,
|
||||
max_active, 16);
|
||||
btrfs_alloc_workqueue(fs_info, "worker",
|
||||
flags | WQ_HIGHPRI, max_active, 16);
|
||||
|
||||
fs_info->delalloc_workers =
|
||||
btrfs_alloc_workqueue("delalloc", flags, max_active, 2);
|
||||
btrfs_alloc_workqueue(fs_info, "delalloc",
|
||||
flags, max_active, 2);
|
||||
|
||||
fs_info->flush_workers =
|
||||
btrfs_alloc_workqueue("flush_delalloc", flags, max_active, 0);
|
||||
btrfs_alloc_workqueue(fs_info, "flush_delalloc",
|
||||
flags, max_active, 0);
|
||||
|
||||
fs_info->caching_workers =
|
||||
btrfs_alloc_workqueue("cache", flags, max_active, 0);
|
||||
btrfs_alloc_workqueue(fs_info, "cache", flags, max_active, 0);
|
||||
|
||||
/*
|
||||
* a higher idle thresh on the submit workers makes it much more
|
||||
|
@ -2328,41 +2330,48 @@ static int btrfs_init_workqueues(struct btrfs_fs_info *fs_info,
|
|||
* devices
|
||||
*/
|
||||
fs_info->submit_workers =
|
||||
btrfs_alloc_workqueue("submit", flags,
|
||||
btrfs_alloc_workqueue(fs_info, "submit", flags,
|
||||
min_t(u64, fs_devices->num_devices,
|
||||
max_active), 64);
|
||||
|
||||
fs_info->fixup_workers =
|
||||
btrfs_alloc_workqueue("fixup", flags, 1, 0);
|
||||
btrfs_alloc_workqueue(fs_info, "fixup", flags, 1, 0);
|
||||
|
||||
/*
|
||||
* endios are largely parallel and should have a very
|
||||
* low idle thresh
|
||||
*/
|
||||
fs_info->endio_workers =
|
||||
btrfs_alloc_workqueue("endio", flags, max_active, 4);
|
||||
btrfs_alloc_workqueue(fs_info, "endio", flags, max_active, 4);
|
||||
fs_info->endio_meta_workers =
|
||||
btrfs_alloc_workqueue("endio-meta", flags, max_active, 4);
|
||||
btrfs_alloc_workqueue(fs_info, "endio-meta", flags,
|
||||
max_active, 4);
|
||||
fs_info->endio_meta_write_workers =
|
||||
btrfs_alloc_workqueue("endio-meta-write", flags, max_active, 2);
|
||||
btrfs_alloc_workqueue(fs_info, "endio-meta-write", flags,
|
||||
max_active, 2);
|
||||
fs_info->endio_raid56_workers =
|
||||
btrfs_alloc_workqueue("endio-raid56", flags, max_active, 4);
|
||||
btrfs_alloc_workqueue(fs_info, "endio-raid56", flags,
|
||||
max_active, 4);
|
||||
fs_info->endio_repair_workers =
|
||||
btrfs_alloc_workqueue("endio-repair", flags, 1, 0);
|
||||
btrfs_alloc_workqueue(fs_info, "endio-repair", flags, 1, 0);
|
||||
fs_info->rmw_workers =
|
||||
btrfs_alloc_workqueue("rmw", flags, max_active, 2);
|
||||
btrfs_alloc_workqueue(fs_info, "rmw", flags, max_active, 2);
|
||||
fs_info->endio_write_workers =
|
||||
btrfs_alloc_workqueue("endio-write", flags, max_active, 2);
|
||||
btrfs_alloc_workqueue(fs_info, "endio-write", flags,
|
||||
max_active, 2);
|
||||
fs_info->endio_freespace_worker =
|
||||
btrfs_alloc_workqueue("freespace-write", flags, max_active, 0);
|
||||
btrfs_alloc_workqueue(fs_info, "freespace-write", flags,
|
||||
max_active, 0);
|
||||
fs_info->delayed_workers =
|
||||
btrfs_alloc_workqueue("delayed-meta", flags, max_active, 0);
|
||||
btrfs_alloc_workqueue(fs_info, "delayed-meta", flags,
|
||||
max_active, 0);
|
||||
fs_info->readahead_workers =
|
||||
btrfs_alloc_workqueue("readahead", flags, max_active, 2);
|
||||
btrfs_alloc_workqueue(fs_info, "readahead", flags,
|
||||
max_active, 2);
|
||||
fs_info->qgroup_rescan_workers =
|
||||
btrfs_alloc_workqueue("qgroup-rescan", flags, 1, 0);
|
||||
btrfs_alloc_workqueue(fs_info, "qgroup-rescan", flags, 1, 0);
|
||||
fs_info->extent_workers =
|
||||
btrfs_alloc_workqueue("extent-refs", flags,
|
||||
btrfs_alloc_workqueue(fs_info, "extent-refs", flags,
|
||||
min_t(u64, fs_devices->num_devices,
|
||||
max_active), 8);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue