diff options
Diffstat (limited to 'fs/btrfs/super.c')
| -rw-r--r-- | fs/btrfs/super.c | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index d04db817be5c..9dbf42395153 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c | |||
| @@ -1305,13 +1305,6 @@ error_fs_info: | |||
| 1305 | return ERR_PTR(error); | 1305 | return ERR_PTR(error); |
| 1306 | } | 1306 | } |
| 1307 | 1307 | ||
| 1308 | static void btrfs_set_max_workers(struct btrfs_workers *workers, int new_limit) | ||
| 1309 | { | ||
| 1310 | spin_lock_irq(&workers->lock); | ||
| 1311 | workers->max_workers = new_limit; | ||
| 1312 | spin_unlock_irq(&workers->lock); | ||
| 1313 | } | ||
| 1314 | |||
| 1315 | static void btrfs_resize_thread_pool(struct btrfs_fs_info *fs_info, | 1308 | static void btrfs_resize_thread_pool(struct btrfs_fs_info *fs_info, |
| 1316 | int new_pool_size, int old_pool_size) | 1309 | int new_pool_size, int old_pool_size) |
| 1317 | { | 1310 | { |
| @@ -1323,21 +1316,20 @@ static void btrfs_resize_thread_pool(struct btrfs_fs_info *fs_info, | |||
| 1323 | btrfs_info(fs_info, "resize thread pool %d -> %d", | 1316 | btrfs_info(fs_info, "resize thread pool %d -> %d", |
| 1324 | old_pool_size, new_pool_size); | 1317 | old_pool_size, new_pool_size); |
| 1325 | 1318 | ||
| 1326 | btrfs_set_max_workers(&fs_info->generic_worker, new_pool_size); | 1319 | btrfs_workqueue_set_max(fs_info->workers, new_pool_size); |
| 1327 | btrfs_set_max_workers(&fs_info->workers, new_pool_size); | 1320 | btrfs_workqueue_set_max(fs_info->delalloc_workers, new_pool_size); |
| 1328 | btrfs_set_max_workers(&fs_info->delalloc_workers, new_pool_size); | 1321 | btrfs_workqueue_set_max(fs_info->submit_workers, new_pool_size); |
| 1329 | btrfs_set_max_workers(&fs_info->submit_workers, new_pool_size); | 1322 | btrfs_workqueue_set_max(fs_info->caching_workers, new_pool_size); |
| 1330 | btrfs_set_max_workers(&fs_info->caching_workers, new_pool_size); | 1323 | btrfs_workqueue_set_max(fs_info->endio_workers, new_pool_size); |
| 1331 | btrfs_set_max_workers(&fs_info->fixup_workers, new_pool_size); | 1324 | btrfs_workqueue_set_max(fs_info->endio_meta_workers, new_pool_size); |
| 1332 | btrfs_set_max_workers(&fs_info->endio_workers, new_pool_size); | 1325 | btrfs_workqueue_set_max(fs_info->endio_meta_write_workers, |
| 1333 | btrfs_set_max_workers(&fs_info->endio_meta_workers, new_pool_size); | 1326 | new_pool_size); |
| 1334 | btrfs_set_max_workers(&fs_info->endio_meta_write_workers, new_pool_size); | 1327 | btrfs_workqueue_set_max(fs_info->endio_write_workers, new_pool_size); |
| 1335 | btrfs_set_max_workers(&fs_info->endio_write_workers, new_pool_size); | 1328 | btrfs_workqueue_set_max(fs_info->endio_freespace_worker, new_pool_size); |
| 1336 | btrfs_set_max_workers(&fs_info->endio_freespace_worker, new_pool_size); | 1329 | btrfs_workqueue_set_max(fs_info->delayed_workers, new_pool_size); |
| 1337 | btrfs_set_max_workers(&fs_info->delayed_workers, new_pool_size); | 1330 | btrfs_workqueue_set_max(fs_info->readahead_workers, new_pool_size); |
| 1338 | btrfs_set_max_workers(&fs_info->readahead_workers, new_pool_size); | 1331 | btrfs_workqueue_set_max(fs_info->scrub_wr_completion_workers, |
| 1339 | btrfs_set_max_workers(&fs_info->scrub_wr_completion_workers, | 1332 | new_pool_size); |
| 1340 | new_pool_size); | ||
| 1341 | } | 1333 | } |
| 1342 | 1334 | ||
| 1343 | static inline void btrfs_remount_prepare(struct btrfs_fs_info *fs_info) | 1335 | static inline void btrfs_remount_prepare(struct btrfs_fs_info *fs_info) |
| @@ -1388,6 +1380,7 @@ static int btrfs_remount(struct super_block *sb, int *flags, char *data) | |||
| 1388 | unsigned int old_metadata_ratio = fs_info->metadata_ratio; | 1380 | unsigned int old_metadata_ratio = fs_info->metadata_ratio; |
| 1389 | int ret; | 1381 | int ret; |
| 1390 | 1382 | ||
| 1383 | sync_filesystem(sb); | ||
| 1391 | btrfs_remount_prepare(fs_info); | 1384 | btrfs_remount_prepare(fs_info); |
| 1392 | 1385 | ||
| 1393 | ret = btrfs_parse_options(root, data); | 1386 | ret = btrfs_parse_options(root, data); |
| @@ -1479,6 +1472,7 @@ static int btrfs_remount(struct super_block *sb, int *flags, char *data) | |||
| 1479 | sb->s_flags &= ~MS_RDONLY; | 1472 | sb->s_flags &= ~MS_RDONLY; |
| 1480 | } | 1473 | } |
| 1481 | out: | 1474 | out: |
| 1475 | wake_up_process(fs_info->transaction_kthread); | ||
| 1482 | btrfs_remount_cleanup(fs_info, old_opts); | 1476 | btrfs_remount_cleanup(fs_info, old_opts); |
| 1483 | return 0; | 1477 | return 0; |
| 1484 | 1478 | ||
