Re: [PATCH] btrfs: rename btrfs_close_extra_device to btrfs_free_extra_devids

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 03/01/2018 12:42 PM, kbuild test robot wrote:
Hi Anand,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on btrfs/next]
[also build test ERROR on v4.16-rc3 next-20180228]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Anand-Jain/btrfs-rename-btrfs_close_extra_device-to-btrfs_free_extra_devids/20180301-120850
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs.git next
config: x86_64-randconfig-x016-201808 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
         # save the attached .config to linux build tree
         make ARCH=x86_64

All errors (new ones prefixed by >>):


 there is v2 which already fixed this.

Thanks,
Anand

    fs/btrfs/disk-io.c: In function 'open_ctree':
fs/btrfs/disk-io.c:2783:2: error: implicit declaration of function 'btrfs_free_extra_devids'; did you mean 'btrfs_free_extra_devid'? [-Werror=implicit-function-declaration]
      btrfs_free_extra_devids(fs_devices, 0);
      ^~~~~~~~~~~~~~~~~~~~~~~
      btrfs_free_extra_devid
    cc1: some warnings being treated as errors

vim +2783 fs/btrfs/disk-io.c

   2396	
   2397	int open_ctree(struct super_block *sb,
   2398		       struct btrfs_fs_devices *fs_devices,
   2399		       char *options)
   2400	{
   2401		u32 sectorsize;
   2402		u32 nodesize;
   2403		u32 stripesize;
   2404		u64 generation;
   2405		u64 features;
   2406		struct btrfs_key location;
   2407		struct buffer_head *bh;
   2408		struct btrfs_super_block *disk_super;
   2409		struct btrfs_fs_info *fs_info = btrfs_sb(sb);
   2410		struct btrfs_root *tree_root;
   2411		struct btrfs_root *chunk_root;
   2412		int ret;
   2413		int err = -EINVAL;
   2414		int num_backups_tried = 0;
   2415		int backup_index = 0;
   2416		int max_active;
   2417		int clear_free_space_tree = 0;
   2418	
   2419		tree_root = fs_info->tree_root = btrfs_alloc_root(fs_info, GFP_KERNEL);
   2420		chunk_root = fs_info->chunk_root = btrfs_alloc_root(fs_info, GFP_KERNEL);
   2421		if (!tree_root || !chunk_root) {
   2422			err = -ENOMEM;
   2423			goto fail;
   2424		}
   2425	
   2426		ret = init_srcu_struct(&fs_info->subvol_srcu);
   2427		if (ret) {
   2428			err = ret;
   2429			goto fail;
   2430		}
   2431	
   2432		ret = percpu_counter_init(&fs_info->dirty_metadata_bytes, 0, GFP_KERNEL);
   2433		if (ret) {
   2434			err = ret;
   2435			goto fail_srcu;
   2436		}
   2437		fs_info->dirty_metadata_batch = PAGE_SIZE *
   2438						(1 + ilog2(nr_cpu_ids));
   2439	
   2440		ret = percpu_counter_init(&fs_info->delalloc_bytes, 0, GFP_KERNEL);
   2441		if (ret) {
   2442			err = ret;
   2443			goto fail_dirty_metadata_bytes;
   2444		}
   2445	
   2446		ret = percpu_counter_init(&fs_info->bio_counter, 0, GFP_KERNEL);
   2447		if (ret) {
   2448			err = ret;
   2449			goto fail_delalloc_bytes;
   2450		}
   2451	
   2452		INIT_RADIX_TREE(&fs_info->fs_roots_radix, GFP_ATOMIC);
   2453		INIT_RADIX_TREE(&fs_info->buffer_radix, GFP_ATOMIC);
   2454		INIT_LIST_HEAD(&fs_info->trans_list);
   2455		INIT_LIST_HEAD(&fs_info->dead_roots);
   2456		INIT_LIST_HEAD(&fs_info->delayed_iputs);
   2457		INIT_LIST_HEAD(&fs_info->delalloc_roots);
   2458		INIT_LIST_HEAD(&fs_info->caching_block_groups);
   2459		spin_lock_init(&fs_info->delalloc_root_lock);
   2460		spin_lock_init(&fs_info->trans_lock);
   2461		spin_lock_init(&fs_info->fs_roots_radix_lock);
   2462		spin_lock_init(&fs_info->delayed_iput_lock);
   2463		spin_lock_init(&fs_info->defrag_inodes_lock);
   2464		spin_lock_init(&fs_info->tree_mod_seq_lock);
   2465		spin_lock_init(&fs_info->super_lock);
   2466		spin_lock_init(&fs_info->qgroup_op_lock);
   2467		spin_lock_init(&fs_info->buffer_lock);
   2468		spin_lock_init(&fs_info->unused_bgs_lock);
   2469		rwlock_init(&fs_info->tree_mod_log_lock);
   2470		mutex_init(&fs_info->unused_bg_unpin_mutex);
   2471		mutex_init(&fs_info->delete_unused_bgs_mutex);
   2472		mutex_init(&fs_info->reloc_mutex);
   2473		mutex_init(&fs_info->delalloc_root_mutex);
   2474		mutex_init(&fs_info->cleaner_delayed_iput_mutex);
   2475		seqlock_init(&fs_info->profiles_lock);
   2476	
   2477		INIT_LIST_HEAD(&fs_info->dirty_cowonly_roots);
   2478		INIT_LIST_HEAD(&fs_info->space_info);
   2479		INIT_LIST_HEAD(&fs_info->tree_mod_seq_list);
   2480		INIT_LIST_HEAD(&fs_info->unused_bgs);
   2481		btrfs_mapping_init(&fs_info->mapping_tree);
   2482		btrfs_init_block_rsv(&fs_info->global_block_rsv,
   2483				     BTRFS_BLOCK_RSV_GLOBAL);
   2484		btrfs_init_block_rsv(&fs_info->trans_block_rsv, BTRFS_BLOCK_RSV_TRANS);
   2485		btrfs_init_block_rsv(&fs_info->chunk_block_rsv, BTRFS_BLOCK_RSV_CHUNK);
   2486		btrfs_init_block_rsv(&fs_info->empty_block_rsv, BTRFS_BLOCK_RSV_EMPTY);
   2487		btrfs_init_block_rsv(&fs_info->delayed_block_rsv,
   2488				     BTRFS_BLOCK_RSV_DELOPS);
   2489		atomic_set(&fs_info->async_delalloc_pages, 0);
   2490		atomic_set(&fs_info->defrag_running, 0);
   2491		atomic_set(&fs_info->qgroup_op_seq, 0);
   2492		atomic_set(&fs_info->reada_works_cnt, 0);
   2493		atomic64_set(&fs_info->tree_mod_seq, 0);
   2494		fs_info->sb = sb;
   2495		fs_info->max_inline = BTRFS_DEFAULT_MAX_INLINE;
   2496		fs_info->metadata_ratio = 0;
   2497		fs_info->defrag_inodes = RB_ROOT;
   2498		atomic64_set(&fs_info->free_chunk_space, 0);
   2499		fs_info->tree_mod_log = RB_ROOT;
   2500		fs_info->commit_interval = BTRFS_DEFAULT_COMMIT_INTERVAL;
   2501		fs_info->avg_delayed_ref_runtime = NSEC_PER_SEC >> 6; /* div by 64 */
   2502		/* readahead state */
   2503		INIT_RADIX_TREE(&fs_info->reada_tree, GFP_NOFS & ~__GFP_DIRECT_RECLAIM);
   2504		spin_lock_init(&fs_info->reada_lock);
   2505		btrfs_init_ref_verify(fs_info);
   2506	
   2507		fs_info->thread_pool_size = min_t(unsigned long,
   2508						  num_online_cpus() + 2, 8);
   2509	
   2510		INIT_LIST_HEAD(&fs_info->ordered_roots);
   2511		spin_lock_init(&fs_info->ordered_root_lock);
   2512	
   2513		fs_info->btree_inode = new_inode(sb);
   2514		if (!fs_info->btree_inode) {
   2515			err = -ENOMEM;
   2516			goto fail_bio_counter;
   2517		}
   2518		mapping_set_gfp_mask(fs_info->btree_inode->i_mapping, GFP_NOFS);
   2519	
   2520		fs_info->delayed_root = kmalloc(sizeof(struct btrfs_delayed_root),
   2521						GFP_KERNEL);
   2522		if (!fs_info->delayed_root) {
   2523			err = -ENOMEM;
   2524			goto fail_iput;
   2525		}
   2526		btrfs_init_delayed_root(fs_info->delayed_root);
   2527	
   2528		btrfs_init_scrub(fs_info);
   2529	#ifdef CONFIG_BTRFS_FS_CHECK_INTEGRITY
   2530		fs_info->check_integrity_print_mask = 0;
   2531	#endif
   2532		btrfs_init_balance(fs_info);
   2533		btrfs_init_async_reclaim_work(&fs_info->async_reclaim_work);
   2534	
   2535		sb->s_blocksize = BTRFS_BDEV_BLOCKSIZE;
   2536		sb->s_blocksize_bits = blksize_bits(BTRFS_BDEV_BLOCKSIZE);
   2537	
   2538		btrfs_init_btree_inode(fs_info);
   2539	
   2540		spin_lock_init(&fs_info->block_group_cache_lock);
   2541		fs_info->block_group_cache_tree = RB_ROOT;
   2542		fs_info->first_logical_byte = (u64)-1;
   2543	
   2544		extent_io_tree_init(&fs_info->freed_extents[0], NULL);
   2545		extent_io_tree_init(&fs_info->freed_extents[1], NULL);
   2546		fs_info->pinned_extents = &fs_info->freed_extents[0];
   2547		set_bit(BTRFS_FS_BARRIER, &fs_info->flags);
   2548	
   2549		mutex_init(&fs_info->ordered_operations_mutex);
   2550		mutex_init(&fs_info->tree_log_mutex);
   2551		mutex_init(&fs_info->chunk_mutex);
   2552		mutex_init(&fs_info->transaction_kthread_mutex);
   2553		mutex_init(&fs_info->cleaner_mutex);
   2554		mutex_init(&fs_info->volume_mutex);
   2555		mutex_init(&fs_info->ro_block_group_mutex);
   2556		init_rwsem(&fs_info->commit_root_sem);
   2557		init_rwsem(&fs_info->cleanup_work_sem);
   2558		init_rwsem(&fs_info->subvol_sem);
   2559		sema_init(&fs_info->uuid_tree_rescan_sem, 1);
   2560	
   2561		btrfs_init_dev_replace_locks(fs_info);
   2562		btrfs_init_qgroup(fs_info);
   2563	
   2564		btrfs_init_free_cluster(&fs_info->meta_alloc_cluster);
   2565		btrfs_init_free_cluster(&fs_info->data_alloc_cluster);
   2566	
   2567		init_waitqueue_head(&fs_info->transaction_throttle);
   2568		init_waitqueue_head(&fs_info->transaction_wait);
   2569		init_waitqueue_head(&fs_info->transaction_blocked_wait);
   2570		init_waitqueue_head(&fs_info->async_submit_wait);
   2571	
   2572		INIT_LIST_HEAD(&fs_info->pinned_chunks);
   2573	
   2574		/* Usable values until the real ones are cached from the superblock */
   2575		fs_info->nodesize = 4096;
   2576		fs_info->sectorsize = 4096;
   2577		fs_info->stripesize = 4096;
   2578	
   2579		ret = btrfs_alloc_stripe_hash_table(fs_info);
   2580		if (ret) {
   2581			err = ret;
   2582			goto fail_alloc;
   2583		}
   2584	
   2585		__setup_root(tree_root, fs_info, BTRFS_ROOT_TREE_OBJECTID);
   2586	
   2587		invalidate_bdev(fs_devices->latest_bdev);
   2588	
   2589		/*
   2590		 * Read super block and check the signature bytes only
   2591		 */
   2592		bh = btrfs_read_dev_super(fs_devices->latest_bdev);
   2593		if (IS_ERR(bh)) {
   2594			err = PTR_ERR(bh);
   2595			goto fail_alloc;
   2596		}
   2597	
   2598		/*
   2599		 * We want to check superblock checksum, the type is stored inside.
   2600		 * Pass the whole disk block of size BTRFS_SUPER_INFO_SIZE (4k).
   2601		 */
   2602		if (btrfs_check_super_csum(fs_info, bh->b_data)) {
   2603			btrfs_err(fs_info, "superblock checksum mismatch");
   2604			err = -EINVAL;
   2605			brelse(bh);
   2606			goto fail_alloc;
   2607		}
   2608	
   2609		/*
   2610		 * super_copy is zeroed at allocation time and we never touch the
   2611		 * following bytes up to INFO_SIZE, the checksum is calculated from
   2612		 * the whole block of INFO_SIZE
   2613		 */
   2614		memcpy(fs_info->super_copy, bh->b_data, sizeof(*fs_info->super_copy));
   2615		memcpy(fs_info->super_for_commit, fs_info->super_copy,
   2616		       sizeof(*fs_info->super_for_commit));
   2617		brelse(bh);
   2618	
   2619		memcpy(fs_info->fsid, fs_info->super_copy->fsid, BTRFS_FSID_SIZE);
   2620	
   2621		ret = btrfs_check_super_valid(fs_info);
   2622		if (ret) {
   2623			btrfs_err(fs_info, "superblock contains fatal errors");
   2624			err = -EINVAL;
   2625			goto fail_alloc;
   2626		}
   2627	
   2628		disk_super = fs_info->super_copy;
   2629		if (!btrfs_super_root(disk_super))
   2630			goto fail_alloc;
   2631	
   2632		/* check FS state, whether FS is broken. */
   2633		if (btrfs_super_flags(disk_super) & BTRFS_SUPER_FLAG_ERROR)
   2634			set_bit(BTRFS_FS_STATE_ERROR, &fs_info->fs_state);
   2635	
   2636		/*
   2637		 * run through our array of backup supers and setup
   2638		 * our ring pointer to the oldest one
   2639		 */
   2640		generation = btrfs_super_generation(disk_super);
   2641		find_oldest_super_backup(fs_info, generation);
   2642	
   2643		/*
   2644		 * In the long term, we'll store the compression type in the super
   2645		 * block, and it'll be used for per file compression control.
   2646		 */
   2647		fs_info->compress_type = BTRFS_COMPRESS_ZLIB;
   2648	
   2649		ret = btrfs_parse_options(fs_info, options, sb->s_flags);
   2650		if (ret) {
   2651			err = ret;
   2652			goto fail_alloc;
   2653		}
   2654	
   2655		features = btrfs_super_incompat_flags(disk_super) &
   2656			~BTRFS_FEATURE_INCOMPAT_SUPP;
   2657		if (features) {
   2658			btrfs_err(fs_info,
   2659			    "cannot mount because of unsupported optional features (%llx)",
   2660			    features);
   2661			err = -EINVAL;
   2662			goto fail_alloc;
   2663		}
   2664	
   2665		features = btrfs_super_incompat_flags(disk_super);
   2666		features |= BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF;
   2667		if (fs_info->compress_type == BTRFS_COMPRESS_LZO)
   2668			features |= BTRFS_FEATURE_INCOMPAT_COMPRESS_LZO;
   2669		else if (fs_info->compress_type == BTRFS_COMPRESS_ZSTD)
   2670			features |= BTRFS_FEATURE_INCOMPAT_COMPRESS_ZSTD;
   2671	
   2672		if (features & BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA)
   2673			btrfs_info(fs_info, "has skinny extents");
   2674	
   2675		/*
   2676		 * flag our filesystem as having big metadata blocks if
   2677		 * they are bigger than the page size
   2678		 */
   2679		if (btrfs_super_nodesize(disk_super) > PAGE_SIZE) {
   2680			if (!(features & BTRFS_FEATURE_INCOMPAT_BIG_METADATA))
   2681				btrfs_info(fs_info,
   2682					"flagging fs with big metadata feature");
   2683			features |= BTRFS_FEATURE_INCOMPAT_BIG_METADATA;
   2684		}
   2685	
   2686		nodesize = btrfs_super_nodesize(disk_super);
   2687		sectorsize = btrfs_super_sectorsize(disk_super);
   2688		stripesize = sectorsize;
   2689		fs_info->dirty_metadata_batch = nodesize * (1 + ilog2(nr_cpu_ids));
   2690		fs_info->delalloc_batch = sectorsize * 512 * (1 + ilog2(nr_cpu_ids));
   2691	
   2692		/* Cache block sizes */
   2693		fs_info->nodesize = nodesize;
   2694		fs_info->sectorsize = sectorsize;
   2695		fs_info->stripesize = stripesize;
   2696	
   2697		/*
   2698		 * mixed block groups end up with duplicate but slightly offset
   2699		 * extent buffers for the same range.  It leads to corruptions
   2700		 */
   2701		if ((features & BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS) &&
   2702		    (sectorsize != nodesize)) {
   2703			btrfs_err(fs_info,
   2704	"unequal nodesize/sectorsize (%u != %u) are not allowed for mixed block groups",
   2705				nodesize, sectorsize);
   2706			goto fail_alloc;
   2707		}
   2708	
   2709		/*
   2710		 * Needn't use the lock because there is no other task which will
   2711		 * update the flag.
   2712		 */
   2713		btrfs_set_super_incompat_flags(disk_super, features);
   2714	
   2715		features = btrfs_super_compat_ro_flags(disk_super) &
   2716			~BTRFS_FEATURE_COMPAT_RO_SUPP;
   2717		if (!sb_rdonly(sb) && features) {
   2718			btrfs_err(fs_info,
   2719		"cannot mount read-write because of unsupported optional features (%llx)",
   2720			       features);
   2721			err = -EINVAL;
   2722			goto fail_alloc;
   2723		}
   2724	
   2725		max_active = fs_info->thread_pool_size;
   2726	
   2727		ret = btrfs_init_workqueues(fs_info, fs_devices);
   2728		if (ret) {
   2729			err = ret;
   2730			goto fail_sb_buffer;
   2731		}
   2732	
   2733		sb->s_bdi->congested_fn = btrfs_congested_fn;
   2734		sb->s_bdi->congested_data = fs_info;
   2735		sb->s_bdi->capabilities |= BDI_CAP_CGROUP_WRITEBACK;
   2736		sb->s_bdi->ra_pages = VM_MAX_READAHEAD * SZ_1K / PAGE_SIZE;
   2737		sb->s_bdi->ra_pages *= btrfs_super_num_devices(disk_super);
   2738		sb->s_bdi->ra_pages = max(sb->s_bdi->ra_pages, SZ_4M / PAGE_SIZE);
   2739	
   2740		sb->s_blocksize = sectorsize;
   2741		sb->s_blocksize_bits = blksize_bits(sectorsize);
   2742		memcpy(&sb->s_uuid, fs_info->fsid, BTRFS_FSID_SIZE);
   2743	
   2744		mutex_lock(&fs_info->chunk_mutex);
   2745		ret = btrfs_read_sys_array(fs_info);
   2746		mutex_unlock(&fs_info->chunk_mutex);
   2747		if (ret) {
   2748			btrfs_err(fs_info, "failed to read the system array: %d", ret);
   2749			goto fail_sb_buffer;
   2750		}
   2751	
   2752		generation = btrfs_super_chunk_root_generation(disk_super);
   2753	
   2754		__setup_root(chunk_root, fs_info, BTRFS_CHUNK_TREE_OBJECTID);
   2755	
   2756		chunk_root->node = read_tree_block(fs_info,
   2757						   btrfs_super_chunk_root(disk_super),
   2758						   generation);
   2759		if (IS_ERR(chunk_root->node) ||
   2760		    !extent_buffer_uptodate(chunk_root->node)) {
   2761			btrfs_err(fs_info, "failed to read chunk root");
   2762			if (!IS_ERR(chunk_root->node))
   2763				free_extent_buffer(chunk_root->node);
   2764			chunk_root->node = NULL;
   2765			goto fail_tree_roots;
   2766		}
   2767		btrfs_set_root_node(&chunk_root->root_item, chunk_root->node);
   2768		chunk_root->commit_root = btrfs_root_node(chunk_root);
   2769	
   2770		read_extent_buffer(chunk_root->node, fs_info->chunk_tree_uuid,
   2771		   btrfs_header_chunk_tree_uuid(chunk_root->node), BTRFS_UUID_SIZE);
   2772	
   2773		ret = btrfs_read_chunk_tree(fs_info);
   2774		if (ret) {
   2775			btrfs_err(fs_info, "failed to read chunk tree: %d", ret);
   2776			goto fail_tree_roots;
   2777		}
   2778	
   2779		/*
   2780		 * keep the devid that is marked to be the target device for the
   2781		 * dev_replace procedure
   2782		 */
2783		btrfs_free_extra_devids(fs_devices, 0);
   2784	
   2785		if (!fs_devices->latest_bdev) {
   2786			btrfs_err(fs_info, "failed to read devices");
   2787			goto fail_tree_roots;
   2788		}
   2789	
   2790	retry_root_backup:
   2791		generation = btrfs_super_generation(disk_super);
   2792	
   2793		tree_root->node = read_tree_block(fs_info,
   2794						  btrfs_super_root(disk_super),
   2795						  generation);
   2796		if (IS_ERR(tree_root->node) ||
   2797		    !extent_buffer_uptodate(tree_root->node)) {
   2798			btrfs_warn(fs_info, "failed to read tree root");
   2799			if (!IS_ERR(tree_root->node))
   2800				free_extent_buffer(tree_root->node);
   2801			tree_root->node = NULL;
   2802			goto recovery_tree_root;
   2803		}
   2804	
   2805		btrfs_set_root_node(&tree_root->root_item, tree_root->node);
   2806		tree_root->commit_root = btrfs_root_node(tree_root);
   2807		btrfs_set_root_refs(&tree_root->root_item, 1);
   2808	
   2809		mutex_lock(&tree_root->objectid_mutex);
   2810		ret = btrfs_find_highest_objectid(tree_root,
   2811						&tree_root->highest_objectid);
   2812		if (ret) {
   2813			mutex_unlock(&tree_root->objectid_mutex);
   2814			goto recovery_tree_root;
   2815		}
   2816	
   2817		ASSERT(tree_root->highest_objectid <= BTRFS_LAST_FREE_OBJECTID);
   2818	
   2819		mutex_unlock(&tree_root->objectid_mutex);
   2820	
   2821		ret = btrfs_read_roots(fs_info);
   2822		if (ret)
   2823			goto recovery_tree_root;
   2824	
   2825		fs_info->generation = generation;
   2826		fs_info->last_trans_committed = generation;
   2827	
   2828		ret = btrfs_recover_balance(fs_info);
   2829		if (ret) {
   2830			btrfs_err(fs_info, "failed to recover balance: %d", ret);
   2831			goto fail_block_groups;
   2832		}
   2833	
   2834		ret = btrfs_init_dev_stats(fs_info);
   2835		if (ret) {
   2836			btrfs_err(fs_info, "failed to init dev_stats: %d", ret);
   2837			goto fail_block_groups;
   2838		}
   2839	
   2840		ret = btrfs_init_dev_replace(fs_info);
   2841		if (ret) {
   2842			btrfs_err(fs_info, "failed to init dev_replace: %d", ret);
   2843			goto fail_block_groups;
   2844		}
   2845	
   2846		btrfs_free_extra_devids(fs_devices, 1);
   2847	
   2848		ret = btrfs_sysfs_add_fsid(fs_devices, NULL);
   2849		if (ret) {
   2850			btrfs_err(fs_info, "failed to init sysfs fsid interface: %d",
   2851					ret);
   2852			goto fail_block_groups;
   2853		}
   2854	
   2855		ret = btrfs_sysfs_add_device(fs_devices);
   2856		if (ret) {
   2857			btrfs_err(fs_info, "failed to init sysfs device interface: %d",
   2858					ret);
   2859			goto fail_fsdev_sysfs;
   2860		}
   2861	
   2862		ret = btrfs_sysfs_add_mounted(fs_info);
   2863		if (ret) {
   2864			btrfs_err(fs_info, "failed to init sysfs interface: %d", ret);
   2865			goto fail_fsdev_sysfs;
   2866		}
   2867	
   2868		ret = btrfs_init_space_info(fs_info);
   2869		if (ret) {
   2870			btrfs_err(fs_info, "failed to initialize space info: %d", ret);
   2871			goto fail_sysfs;
   2872		}
   2873	
   2874		ret = btrfs_read_block_groups(fs_info);
   2875		if (ret) {
   2876			btrfs_err(fs_info, "failed to read block groups: %d", ret);
   2877			goto fail_sysfs;
   2878		}
   2879	
   2880		if (!sb_rdonly(sb) && !btrfs_check_rw_degradable(fs_info)) {
   2881			btrfs_warn(fs_info,
   2882			"writeable mount is not allowed due to too many missing devices");
   2883			goto fail_sysfs;
   2884		}
   2885	
   2886		fs_info->cleaner_kthread = kthread_run(cleaner_kthread, tree_root,
   2887						       "btrfs-cleaner");
   2888		if (IS_ERR(fs_info->cleaner_kthread))
   2889			goto fail_sysfs;
   2890	
   2891		fs_info->transaction_kthread = kthread_run(transaction_kthread,
   2892							   tree_root,
   2893							   "btrfs-transaction");
   2894		if (IS_ERR(fs_info->transaction_kthread))
   2895			goto fail_cleaner;
   2896	
   2897		if (!btrfs_test_opt(fs_info, NOSSD) &&
   2898		    !fs_info->fs_devices->rotating) {
   2899			btrfs_set_and_info(fs_info, SSD, "enabling ssd optimizations");
   2900		}
   2901	
   2902		/*
   2903		 * Mount does not set all options immediately, we can do it now and do
   2904		 * not have to wait for transaction commit
   2905		 */
   2906		btrfs_apply_pending_changes(fs_info);
   2907	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux