Merge tag 'compat-ioctl-5.5' of git://git.kernel.org:/pub/scm/linux/kernel/git/arnd...
[linux-2.6-microblaze.git] / fs / btrfs / super.c
index d9ba089..f452a94 100644 (file)
@@ -66,7 +66,7 @@ static struct file_system_type btrfs_root_fs_type;
 
 static int btrfs_remount(struct super_block *sb, int *flags, char *data);
 
-const char *btrfs_decode_error(int errno)
+const char * __attribute_const__ btrfs_decode_error(int errno)
 {
        char *errstr = "unknown";
 
@@ -187,7 +187,7 @@ static struct ratelimit_state printk_limits[] = {
        RATELIMIT_STATE_INIT(printk_limits[7], DEFAULT_RATELIMIT_INTERVAL, 100),
 };
 
-void btrfs_printk(const struct btrfs_fs_info *fs_info, const char *fmt, ...)
+void __cold btrfs_printk(const struct btrfs_fs_info *fs_info, const char *fmt, ...)
 {
        char lvl[PRINTK_MAX_SINGLE_HEADER_LEN + 1] = "\0";
        struct va_format vaf;
@@ -1219,7 +1219,7 @@ static int btrfs_fill_super(struct super_block *sb,
        key.objectid = BTRFS_FIRST_FREE_OBJECTID;
        key.type = BTRFS_INODE_ITEM_KEY;
        key.offset = 0;
-       inode = btrfs_iget(sb, &key, fs_info->fs_root, NULL);
+       inode = btrfs_iget(sb, &key, fs_info->fs_root);
        if (IS_ERR(inode)) {
                err = PTR_ERR(inode);
                goto fail_close;
@@ -1669,7 +1669,6 @@ static void btrfs_resize_thread_pool(struct btrfs_fs_info *fs_info,
 
        btrfs_workqueue_set_max(fs_info->workers, new_pool_size);
        btrfs_workqueue_set_max(fs_info->delalloc_workers, new_pool_size);
-       btrfs_workqueue_set_max(fs_info->submit_workers, new_pool_size);
        btrfs_workqueue_set_max(fs_info->caching_workers, new_pool_size);
        btrfs_workqueue_set_max(fs_info->endio_workers, new_pool_size);
        btrfs_workqueue_set_max(fs_info->endio_meta_workers, new_pool_size);
@@ -1936,6 +1935,10 @@ static inline int btrfs_calc_avail_data_space(struct btrfs_fs_info *fs_info,
                num_stripes = nr_devices;
        else if (type & BTRFS_BLOCK_GROUP_RAID1)
                num_stripes = 2;
+       else if (type & BTRFS_BLOCK_GROUP_RAID1C3)
+               num_stripes = 3;
+       else if (type & BTRFS_BLOCK_GROUP_RAID1C4)
+               num_stripes = 4;
        else if (type & BTRFS_BLOCK_GROUP_RAID10)
                num_stripes = 4;
 
@@ -2022,7 +2025,6 @@ static int btrfs_statfs(struct dentry *dentry, struct kstatfs *buf)
 {
        struct btrfs_fs_info *fs_info = btrfs_sb(dentry->d_sb);
        struct btrfs_super_block *disk_super = fs_info->super_copy;
-       struct list_head *head = &fs_info->space_info;
        struct btrfs_space_info *found;
        u64 total_used = 0;
        u64 total_free_data = 0;
@@ -2036,7 +2038,7 @@ static int btrfs_statfs(struct dentry *dentry, struct kstatfs *buf)
        int mixed = 0;
 
        rcu_read_lock();
-       list_for_each_entry_rcu(found, head, list) {
+       list_for_each_entry_rcu(found, &fs_info->space_info, list) {
                if (found->flags & BTRFS_BLOCK_GROUP_DATA) {
                        int i;
 
@@ -2360,10 +2362,14 @@ static int __init init_btrfs_fs(void)
        if (err)
                goto free_cachep;
 
-       err = extent_map_init();
+       err = extent_state_cache_init();
        if (err)
                goto free_extent_io;
 
+       err = extent_map_init();
+       if (err)
+               goto free_extent_state_cache;
+
        err = ordered_data_init();
        if (err)
                goto free_extent_map;
@@ -2422,6 +2428,8 @@ free_ordered_data:
        ordered_data_exit();
 free_extent_map:
        extent_map_exit();
+free_extent_state_cache:
+       extent_state_cache_exit();
 free_extent_io:
        extent_io_exit();
 free_cachep:
@@ -2442,6 +2450,7 @@ static void __exit exit_btrfs_fs(void)
        btrfs_prelim_ref_exit();
        ordered_data_exit();
        extent_map_exit();
+       extent_state_cache_exit();
        extent_io_exit();
        btrfs_interface_exit();
        btrfs_end_io_wq_exit();
@@ -2456,3 +2465,6 @@ module_exit(exit_btrfs_fs)
 
 MODULE_LICENSE("GPL");
 MODULE_SOFTDEP("pre: crc32c");
+MODULE_SOFTDEP("pre: xxhash64");
+MODULE_SOFTDEP("pre: sha256");
+MODULE_SOFTDEP("pre: blake2b-256");