aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/disk-io.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/disk-io.c')
-rw-r--r--fs/btrfs/disk-io.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 9601b13c7d7a..1bf210dadef6 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -492,11 +492,11 @@ static int __btree_submit_bio_hook(struct inode *inode, int rw, struct bio *bio,
492 492
493 /* 493 /*
494 * when we're called for a write, we're already in the async 494 * when we're called for a write, we're already in the async
495 * submission context. Just jump ingo btrfs_map_bio 495 * submission context. Just jump into btrfs_map_bio
496 */ 496 */
497 if (rw & (1 << BIO_RW)) { 497 if (rw & (1 << BIO_RW)) {
498 return btrfs_map_bio(BTRFS_I(inode)->root, rw, bio, 498 return btrfs_map_bio(BTRFS_I(inode)->root, rw, bio,
499 mirror_num, 0); 499 mirror_num, 1);
500 } 500 }
501 501
502 /* 502 /*
@@ -528,6 +528,12 @@ static int btree_writepage(struct page *page, struct writeback_control *wbc)
528{ 528{
529 struct extent_io_tree *tree; 529 struct extent_io_tree *tree;
530 tree = &BTRFS_I(page->mapping->host)->io_tree; 530 tree = &BTRFS_I(page->mapping->host)->io_tree;
531
532 if (current->flags & PF_MEMALLOC) {
533 redirty_page_for_writepage(wbc, page);
534 unlock_page(page);
535 return 0;
536 }
531 return extent_write_full_page(tree, page, btree_get_extent, wbc); 537 return extent_write_full_page(tree, page, btree_get_extent, wbc);
532} 538}
533 539
@@ -1363,8 +1369,9 @@ struct btrfs_root *open_ctree(struct super_block *sb,
1363 * queue work function gets called at interrupt time, and so it 1369 * queue work function gets called at interrupt time, and so it
1364 * cannot dynamically grow. 1370 * cannot dynamically grow.
1365 */ 1371 */
1366 btrfs_init_workers(&fs_info->workers, fs_info->thread_pool_size); 1372 btrfs_init_workers(&fs_info->workers, "worker",
1367 btrfs_init_workers(&fs_info->submit_workers, 1373 fs_info->thread_pool_size);
1374 btrfs_init_workers(&fs_info->submit_workers, "submit",
1368 min_t(u64, fs_devices->num_devices, 1375 min_t(u64, fs_devices->num_devices,
1369 fs_info->thread_pool_size)); 1376 fs_info->thread_pool_size));
1370 1377
@@ -1374,9 +1381,10 @@ struct btrfs_root *open_ctree(struct super_block *sb,
1374 */ 1381 */
1375 fs_info->submit_workers.idle_thresh = 64; 1382 fs_info->submit_workers.idle_thresh = 64;
1376 1383
1377 btrfs_init_workers(&fs_info->fixup_workers, 1); 1384 btrfs_init_workers(&fs_info->fixup_workers, "fixup", 1);
1378 btrfs_init_workers(&fs_info->endio_workers, fs_info->thread_pool_size); 1385 btrfs_init_workers(&fs_info->endio_workers, "endio",
1379 btrfs_init_workers(&fs_info->endio_write_workers, 1386 fs_info->thread_pool_size);
1387 btrfs_init_workers(&fs_info->endio_write_workers, "endio-write",
1380 fs_info->thread_pool_size); 1388 fs_info->thread_pool_size);
1381 1389
1382 /* 1390 /*