@@ -1201,10 +1201,7 @@ static void __setup_root(u32 nodesize, u32 leafsize, u32 sectorsize,
12011201 root -> nodesize = nodesize ;
12021202 root -> leafsize = leafsize ;
12031203 root -> stripesize = stripesize ;
1204- root -> ref_cows = 0 ;
1205- root -> track_dirty = 0 ;
1206- root -> in_radix = 0 ;
1207- root -> orphan_item_inserted = 0 ;
1204+ root -> state = 0 ;
12081205 root -> orphan_cleanup_state = 0 ;
12091206
12101207 root -> objectid = objectid ;
@@ -1265,7 +1262,6 @@ static void __setup_root(u32 nodesize, u32 leafsize, u32 sectorsize,
12651262 else
12661263 root -> defrag_trans_start = 0 ;
12671264 init_completion (& root -> kobj_unregister );
1268- root -> defrag_running = 0 ;
12691265 root -> root_key .objectid = objectid ;
12701266 root -> anon_dev = 0 ;
12711267
@@ -1290,7 +1286,7 @@ struct btrfs_root *btrfs_alloc_dummy_root(void)
12901286 if (!root )
12911287 return ERR_PTR (- ENOMEM );
12921288 __setup_root (4096 , 4096 , 4096 , 4096 , root , NULL , 1 );
1293- root -> dummy_root = 1 ;
1289+ set_bit ( BTRFS_ROOT_DUMMY_ROOT , & root -> state ) ;
12941290
12951291 return root ;
12961292}
@@ -1341,8 +1337,7 @@ struct btrfs_root *btrfs_create_tree(struct btrfs_trans_handle *trans,
13411337 btrfs_mark_buffer_dirty (leaf );
13421338
13431339 root -> commit_root = btrfs_root_node (root );
1344- root -> track_dirty = 1 ;
1345-
1340+ set_bit (BTRFS_ROOT_TRACK_DIRTY , & root -> state );
13461341
13471342 root -> root_item .flags = 0 ;
13481343 root -> root_item .byte_limit = 0 ;
@@ -1396,13 +1391,15 @@ static struct btrfs_root *alloc_log_tree(struct btrfs_trans_handle *trans,
13961391 root -> root_key .objectid = BTRFS_TREE_LOG_OBJECTID ;
13971392 root -> root_key .type = BTRFS_ROOT_ITEM_KEY ;
13981393 root -> root_key .offset = BTRFS_TREE_LOG_OBJECTID ;
1394+
13991395 /*
1396+ * DON'T set REF_COWS for log trees
1397+ *
14001398 * log trees do not get reference counted because they go away
14011399 * before a real commit is actually done. They do store pointers
14021400 * to file data extents, and those reference counts still get
14031401 * updated (along with back refs to the log tree).
14041402 */
1405- root -> ref_cows = 0 ;
14061403
14071404 leaf = btrfs_alloc_free_block (trans , root , root -> leafsize , 0 ,
14081405 BTRFS_TREE_LOG_OBJECTID , NULL ,
@@ -1536,7 +1533,7 @@ struct btrfs_root *btrfs_read_fs_root(struct btrfs_root *tree_root,
15361533 return root ;
15371534
15381535 if (root -> root_key .objectid != BTRFS_TREE_LOG_OBJECTID ) {
1539- root -> ref_cows = 1 ;
1536+ set_bit ( BTRFS_ROOT_REF_COWS , & root -> state ) ;
15401537 btrfs_check_and_init_root_item (& root -> root_item );
15411538 }
15421539
@@ -1606,7 +1603,7 @@ int btrfs_insert_fs_root(struct btrfs_fs_info *fs_info,
16061603 (unsigned long )root -> root_key .objectid ,
16071604 root );
16081605 if (ret == 0 )
1609- root -> in_radix = 1 ;
1606+ set_bit ( BTRFS_ROOT_IN_RADIX , & root -> state ) ;
16101607 spin_unlock (& fs_info -> fs_roots_radix_lock );
16111608 radix_tree_preload_end ();
16121609
@@ -1662,7 +1659,7 @@ struct btrfs_root *btrfs_get_fs_root(struct btrfs_fs_info *fs_info,
16621659 if (ret < 0 )
16631660 goto fail ;
16641661 if (ret == 0 )
1665- root -> orphan_item_inserted = 1 ;
1662+ set_bit ( BTRFS_ROOT_ORPHAN_ITEM_INSERTED , & root -> state ) ;
16661663
16671664 ret = btrfs_insert_fs_root (fs_info , root );
16681665 if (ret ) {
@@ -2101,7 +2098,7 @@ static void del_fs_roots(struct btrfs_fs_info *fs_info)
21012098 struct btrfs_root , root_list );
21022099 list_del (& gang [0 ]-> root_list );
21032100
2104- if (gang [0 ]-> in_radix ) {
2101+ if (test_bit ( BTRFS_ROOT_IN_RADIX , & gang [0 ]-> state ) ) {
21052102 btrfs_drop_and_free_fs_root (fs_info , gang [0 ]);
21062103 } else {
21072104 free_extent_buffer (gang [0 ]-> node );
@@ -2694,7 +2691,7 @@ int open_ctree(struct super_block *sb,
26942691 ret = PTR_ERR (extent_root );
26952692 goto recovery_tree_root ;
26962693 }
2697- extent_root -> track_dirty = 1 ;
2694+ set_bit ( BTRFS_ROOT_TRACK_DIRTY , & extent_root -> state ) ;
26982695 fs_info -> extent_root = extent_root ;
26992696
27002697 location .objectid = BTRFS_DEV_TREE_OBJECTID ;
@@ -2703,7 +2700,7 @@ int open_ctree(struct super_block *sb,
27032700 ret = PTR_ERR (dev_root );
27042701 goto recovery_tree_root ;
27052702 }
2706- dev_root -> track_dirty = 1 ;
2703+ set_bit ( BTRFS_ROOT_TRACK_DIRTY , & dev_root -> state ) ;
27072704 fs_info -> dev_root = dev_root ;
27082705 btrfs_init_devices_late (fs_info );
27092706
@@ -2713,13 +2710,13 @@ int open_ctree(struct super_block *sb,
27132710 ret = PTR_ERR (csum_root );
27142711 goto recovery_tree_root ;
27152712 }
2716- csum_root -> track_dirty = 1 ;
2713+ set_bit ( BTRFS_ROOT_TRACK_DIRTY , & csum_root -> state ) ;
27172714 fs_info -> csum_root = csum_root ;
27182715
27192716 location .objectid = BTRFS_QUOTA_TREE_OBJECTID ;
27202717 quota_root = btrfs_read_tree_root (tree_root , & location );
27212718 if (!IS_ERR (quota_root )) {
2722- quota_root -> track_dirty = 1 ;
2719+ set_bit ( BTRFS_ROOT_TRACK_DIRTY , & quota_root -> state ) ;
27232720 fs_info -> quota_enabled = 1 ;
27242721 fs_info -> pending_quota_state = 1 ;
27252722 fs_info -> quota_root = quota_root ;
@@ -2734,7 +2731,7 @@ int open_ctree(struct super_block *sb,
27342731 create_uuid_tree = true;
27352732 check_uuid_tree = false;
27362733 } else {
2737- uuid_root -> track_dirty = 1 ;
2734+ set_bit ( BTRFS_ROOT_TRACK_DIRTY , & uuid_root -> state ) ;
27382735 fs_info -> uuid_root = uuid_root ;
27392736 create_uuid_tree = false;
27402737 check_uuid_tree =
0 commit comments