diff options
author | Arne Jansen <sensille@gmx.net> | 2011-05-23 08:30:00 -0400 |
---|---|---|
committer | Arne Jansen <sensille@gmx.net> | 2011-10-02 02:48:30 -0400 |
commit | 90519d66abbccc251d14719ac76f191f70826e40 (patch) | |
tree | 93cad519db9f4f0c97abd89d405ea1e0fec306a7 /fs/btrfs/disk-io.c | |
parent | ab0fff03055d2d1b01a7581badeba18db9c4f55c (diff) |
btrfs: state information for readahead
Add state information for readahead to btrfs_fs_info and btrfs_device
Changes v2:
- don't wait in radix_trees
- add own set of workers for readahead
Reviewed-by: Josef Bacik <josef@redhat.com>
Signed-off-by: Arne Jansen <sensille@gmx.net>
Diffstat (limited to 'fs/btrfs/disk-io.c')
-rw-r--r-- | fs/btrfs/disk-io.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 1220d04072c8..fd28c40e9ec3 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
@@ -1711,6 +1711,10 @@ struct btrfs_root *open_ctree(struct super_block *sb, | |||
1711 | fs_info->defrag_inodes = RB_ROOT; | 1711 | fs_info->defrag_inodes = RB_ROOT; |
1712 | fs_info->trans_no_join = 0; | 1712 | fs_info->trans_no_join = 0; |
1713 | 1713 | ||
1714 | /* readahead state */ | ||
1715 | INIT_RADIX_TREE(&fs_info->reada_tree, GFP_NOFS & ~__GFP_WAIT); | ||
1716 | spin_lock_init(&fs_info->reada_lock); | ||
1717 | |||
1714 | fs_info->thread_pool_size = min_t(unsigned long, | 1718 | fs_info->thread_pool_size = min_t(unsigned long, |
1715 | num_online_cpus() + 2, 8); | 1719 | num_online_cpus() + 2, 8); |
1716 | 1720 | ||
@@ -1903,6 +1907,9 @@ struct btrfs_root *open_ctree(struct super_block *sb, | |||
1903 | btrfs_init_workers(&fs_info->delayed_workers, "delayed-meta", | 1907 | btrfs_init_workers(&fs_info->delayed_workers, "delayed-meta", |
1904 | fs_info->thread_pool_size, | 1908 | fs_info->thread_pool_size, |
1905 | &fs_info->generic_worker); | 1909 | &fs_info->generic_worker); |
1910 | btrfs_init_workers(&fs_info->readahead_workers, "readahead", | ||
1911 | fs_info->thread_pool_size, | ||
1912 | &fs_info->generic_worker); | ||
1906 | 1913 | ||
1907 | /* | 1914 | /* |
1908 | * endios are largely parallel and should have a very | 1915 | * endios are largely parallel and should have a very |
@@ -1913,6 +1920,7 @@ struct btrfs_root *open_ctree(struct super_block *sb, | |||
1913 | 1920 | ||
1914 | fs_info->endio_write_workers.idle_thresh = 2; | 1921 | fs_info->endio_write_workers.idle_thresh = 2; |
1915 | fs_info->endio_meta_write_workers.idle_thresh = 2; | 1922 | fs_info->endio_meta_write_workers.idle_thresh = 2; |
1923 | fs_info->readahead_workers.idle_thresh = 2; | ||
1916 | 1924 | ||
1917 | btrfs_start_workers(&fs_info->workers, 1); | 1925 | btrfs_start_workers(&fs_info->workers, 1); |
1918 | btrfs_start_workers(&fs_info->generic_worker, 1); | 1926 | btrfs_start_workers(&fs_info->generic_worker, 1); |
@@ -1926,6 +1934,7 @@ struct btrfs_root *open_ctree(struct super_block *sb, | |||
1926 | btrfs_start_workers(&fs_info->endio_freespace_worker, 1); | 1934 | btrfs_start_workers(&fs_info->endio_freespace_worker, 1); |
1927 | btrfs_start_workers(&fs_info->delayed_workers, 1); | 1935 | btrfs_start_workers(&fs_info->delayed_workers, 1); |
1928 | btrfs_start_workers(&fs_info->caching_workers, 1); | 1936 | btrfs_start_workers(&fs_info->caching_workers, 1); |
1937 | btrfs_start_workers(&fs_info->readahead_workers, 1); | ||
1929 | 1938 | ||
1930 | fs_info->bdi.ra_pages *= btrfs_super_num_devices(disk_super); | 1939 | fs_info->bdi.ra_pages *= btrfs_super_num_devices(disk_super); |
1931 | fs_info->bdi.ra_pages = max(fs_info->bdi.ra_pages, | 1940 | fs_info->bdi.ra_pages = max(fs_info->bdi.ra_pages, |
@@ -2650,6 +2659,7 @@ int close_ctree(struct btrfs_root *root) | |||
2650 | btrfs_stop_workers(&fs_info->submit_workers); | 2659 | btrfs_stop_workers(&fs_info->submit_workers); |
2651 | btrfs_stop_workers(&fs_info->delayed_workers); | 2660 | btrfs_stop_workers(&fs_info->delayed_workers); |
2652 | btrfs_stop_workers(&fs_info->caching_workers); | 2661 | btrfs_stop_workers(&fs_info->caching_workers); |
2662 | btrfs_stop_workers(&fs_info->readahead_workers); | ||
2653 | 2663 | ||
2654 | btrfs_close_devices(fs_info->fs_devices); | 2664 | btrfs_close_devices(fs_info->fs_devices); |
2655 | btrfs_mapping_tree_free(&fs_info->mapping_tree); | 2665 | btrfs_mapping_tree_free(&fs_info->mapping_tree); |