diff options
| -rw-r--r-- | fs/btrfs/ctree.h | 1 | ||||
| -rw-r--r-- | fs/btrfs/disk-io.c | 36 | ||||
| -rw-r--r-- | fs/btrfs/super.c | 7 |
3 files changed, 14 insertions, 30 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 29b7fc28c607..f6019ce20035 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
| @@ -810,7 +810,6 @@ struct btrfs_fs_info { | |||
| 810 | struct btrfs_super_block *super_for_commit; | 810 | struct btrfs_super_block *super_for_commit; |
| 811 | struct super_block *sb; | 811 | struct super_block *sb; |
| 812 | struct inode *btree_inode; | 812 | struct inode *btree_inode; |
| 813 | struct backing_dev_info bdi; | ||
| 814 | struct mutex tree_log_mutex; | 813 | struct mutex tree_log_mutex; |
| 815 | struct mutex transaction_kthread_mutex; | 814 | struct mutex transaction_kthread_mutex; |
| 816 | struct mutex cleaner_mutex; | 815 | struct mutex cleaner_mutex; |
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 08b74daf35d0..a7d8c342f604 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
| @@ -1808,21 +1808,6 @@ static int btrfs_congested_fn(void *congested_data, int bdi_bits) | |||
| 1808 | return ret; | 1808 | return ret; |
| 1809 | } | 1809 | } |
| 1810 | 1810 | ||
| 1811 | static int setup_bdi(struct btrfs_fs_info *info, struct backing_dev_info *bdi) | ||
| 1812 | { | ||
| 1813 | int err; | ||
| 1814 | |||
| 1815 | err = bdi_setup_and_register(bdi, "btrfs"); | ||
| 1816 | if (err) | ||
| 1817 | return err; | ||
| 1818 | |||
| 1819 | bdi->ra_pages = VM_MAX_READAHEAD * 1024 / PAGE_SIZE; | ||
| 1820 | bdi->congested_fn = btrfs_congested_fn; | ||
| 1821 | bdi->congested_data = info; | ||
| 1822 | bdi->capabilities |= BDI_CAP_CGROUP_WRITEBACK; | ||
| 1823 | return 0; | ||
| 1824 | } | ||
| 1825 | |||
| 1826 | /* | 1811 | /* |
| 1827 | * called by the kthread helper functions to finally call the bio end_io | 1812 | * called by the kthread helper functions to finally call the bio end_io |
| 1828 | * functions. This is where read checksum verification actually happens | 1813 | * functions. This is where read checksum verification actually happens |
| @@ -2601,16 +2586,10 @@ int open_ctree(struct super_block *sb, | |||
| 2601 | goto fail; | 2586 | goto fail; |
| 2602 | } | 2587 | } |
| 2603 | 2588 | ||
| 2604 | ret = setup_bdi(fs_info, &fs_info->bdi); | ||
| 2605 | if (ret) { | ||
| 2606 | err = ret; | ||
| 2607 | goto fail_srcu; | ||
| 2608 | } | ||
| 2609 | |||
| 2610 | ret = percpu_counter_init(&fs_info->dirty_metadata_bytes, 0, GFP_KERNEL); | 2589 | ret = percpu_counter_init(&fs_info->dirty_metadata_bytes, 0, GFP_KERNEL); |
| 2611 | if (ret) { | 2590 | if (ret) { |
| 2612 | err = ret; | 2591 | err = ret; |
| 2613 | goto fail_bdi; | 2592 | goto fail_srcu; |
| 2614 | } | 2593 | } |
| 2615 | fs_info->dirty_metadata_batch = PAGE_SIZE * | 2594 | fs_info->dirty_metadata_batch = PAGE_SIZE * |
| 2616 | (1 + ilog2(nr_cpu_ids)); | 2595 | (1 + ilog2(nr_cpu_ids)); |
| @@ -2718,7 +2697,6 @@ int open_ctree(struct super_block *sb, | |||
| 2718 | 2697 | ||
| 2719 | sb->s_blocksize = 4096; | 2698 | sb->s_blocksize = 4096; |
| 2720 | sb->s_blocksize_bits = blksize_bits(4096); | 2699 | sb->s_blocksize_bits = blksize_bits(4096); |
| 2721 | sb->s_bdi = &fs_info->bdi; | ||
| 2722 | 2700 | ||
| 2723 | btrfs_init_btree_inode(fs_info); | 2701 | btrfs_init_btree_inode(fs_info); |
| 2724 | 2702 | ||
| @@ -2915,9 +2893,12 @@ int open_ctree(struct super_block *sb, | |||
| 2915 | goto fail_sb_buffer; | 2893 | goto fail_sb_buffer; |
| 2916 | } | 2894 | } |
| 2917 | 2895 | ||
| 2918 | fs_info->bdi.ra_pages *= btrfs_super_num_devices(disk_super); | 2896 | sb->s_bdi->congested_fn = btrfs_congested_fn; |
| 2919 | fs_info->bdi.ra_pages = max(fs_info->bdi.ra_pages, | 2897 | sb->s_bdi->congested_data = fs_info; |
| 2920 | SZ_4M / PAGE_SIZE); | 2898 | sb->s_bdi->capabilities |= BDI_CAP_CGROUP_WRITEBACK; |
| 2899 | sb->s_bdi->ra_pages = VM_MAX_READAHEAD * 1024 / PAGE_SIZE; | ||
| 2900 | sb->s_bdi->ra_pages *= btrfs_super_num_devices(disk_super); | ||
| 2901 | sb->s_bdi->ra_pages = max(sb->s_bdi->ra_pages, SZ_4M / PAGE_SIZE); | ||
| 2921 | 2902 | ||
| 2922 | sb->s_blocksize = sectorsize; | 2903 | sb->s_blocksize = sectorsize; |
| 2923 | sb->s_blocksize_bits = blksize_bits(sectorsize); | 2904 | sb->s_blocksize_bits = blksize_bits(sectorsize); |
| @@ -3285,8 +3266,6 @@ fail_delalloc_bytes: | |||
| 3285 | percpu_counter_destroy(&fs_info->delalloc_bytes); | 3266 | percpu_counter_destroy(&fs_info->delalloc_bytes); |
| 3286 | fail_dirty_metadata_bytes: | 3267 | fail_dirty_metadata_bytes: |
| 3287 | percpu_counter_destroy(&fs_info->dirty_metadata_bytes); | 3268 | percpu_counter_destroy(&fs_info->dirty_metadata_bytes); |
| 3288 | fail_bdi: | ||
| 3289 | bdi_destroy(&fs_info->bdi); | ||
| 3290 | fail_srcu: | 3269 | fail_srcu: |
| 3291 | cleanup_srcu_struct(&fs_info->subvol_srcu); | 3270 | cleanup_srcu_struct(&fs_info->subvol_srcu); |
| 3292 | fail: | 3271 | fail: |
| @@ -4007,7 +3986,6 @@ void close_ctree(struct btrfs_fs_info *fs_info) | |||
| 4007 | percpu_counter_destroy(&fs_info->dirty_metadata_bytes); | 3986 | percpu_counter_destroy(&fs_info->dirty_metadata_bytes); |
| 4008 | percpu_counter_destroy(&fs_info->delalloc_bytes); | 3987 | percpu_counter_destroy(&fs_info->delalloc_bytes); |
| 4009 | percpu_counter_destroy(&fs_info->bio_counter); | 3988 | percpu_counter_destroy(&fs_info->bio_counter); |
| 4010 | bdi_destroy(&fs_info->bdi); | ||
| 4011 | cleanup_srcu_struct(&fs_info->subvol_srcu); | 3989 | cleanup_srcu_struct(&fs_info->subvol_srcu); |
| 4012 | 3990 | ||
| 4013 | btrfs_free_stripe_hash_table(fs_info); | 3991 | btrfs_free_stripe_hash_table(fs_info); |
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index da687dc79cce..e0a7503ab31e 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c | |||
| @@ -1133,6 +1133,13 @@ static int btrfs_fill_super(struct super_block *sb, | |||
| 1133 | #endif | 1133 | #endif |
| 1134 | sb->s_flags |= MS_I_VERSION; | 1134 | sb->s_flags |= MS_I_VERSION; |
| 1135 | sb->s_iflags |= SB_I_CGROUPWB; | 1135 | sb->s_iflags |= SB_I_CGROUPWB; |
| 1136 | |||
| 1137 | err = super_setup_bdi(sb); | ||
| 1138 | if (err) { | ||
| 1139 | btrfs_err(fs_info, "super_setup_bdi failed"); | ||
| 1140 | return err; | ||
| 1141 | } | ||
| 1142 | |||
| 1136 | err = open_ctree(sb, fs_devices, (char *)data); | 1143 | err = open_ctree(sb, fs_devices, (char *)data); |
| 1137 | if (err) { | 1144 | if (err) { |
| 1138 | btrfs_err(fs_info, "open_ctree failed"); | 1145 | btrfs_err(fs_info, "open_ctree failed"); |
