@@ -1308,7 +1308,7 @@ static int btrfs_free_dev_extent(struct btrfs_trans_handle *trans,
13081308
13091309 if (device -> bytes_used > 0 ) {
13101310 u64 len = btrfs_dev_extent_length (leaf , extent );
1311- device -> bytes_used -= len ;
1311+ btrfs_device_set_bytes_used ( device , device -> bytes_used - len ) ;
13121312 spin_lock (& root -> fs_info -> free_chunk_lock );
13131313 root -> fs_info -> free_chunk_space += len ;
13141314 spin_unlock (& root -> fs_info -> free_chunk_lock );
@@ -1462,8 +1462,10 @@ static int btrfs_add_device(struct btrfs_trans_handle *trans,
14621462 btrfs_set_device_io_align (leaf , dev_item , device -> io_align );
14631463 btrfs_set_device_io_width (leaf , dev_item , device -> io_width );
14641464 btrfs_set_device_sector_size (leaf , dev_item , device -> sector_size );
1465- btrfs_set_device_total_bytes (leaf , dev_item , device -> disk_total_bytes );
1466- btrfs_set_device_bytes_used (leaf , dev_item , device -> bytes_used );
1465+ btrfs_set_device_total_bytes (leaf , dev_item ,
1466+ btrfs_device_get_disk_total_bytes (device ));
1467+ btrfs_set_device_bytes_used (leaf , dev_item ,
1468+ btrfs_device_get_bytes_used (device ));
14671469 btrfs_set_device_group (leaf , dev_item , 0 );
14681470 btrfs_set_device_seek_speed (leaf , dev_item , 0 );
14691471 btrfs_set_device_bandwidth (leaf , dev_item , 0 );
@@ -2330,7 +2332,8 @@ int btrfs_init_dev_replace_tgtdev(struct btrfs_root *root, char *device_path,
23302332 }
23312333
23322334
2333- if (i_size_read (bdev -> bd_inode ) < srcdev -> total_bytes ) {
2335+ if (i_size_read (bdev -> bd_inode ) <
2336+ btrfs_device_get_total_bytes (srcdev )) {
23342337 btrfs_err (fs_info , "target device is smaller than source device!" );
23352338 ret = - EINVAL ;
23362339 goto error ;
@@ -2360,11 +2363,11 @@ int btrfs_init_dev_replace_tgtdev(struct btrfs_root *root, char *device_path,
23602363 device -> io_width = root -> sectorsize ;
23612364 device -> io_align = root -> sectorsize ;
23622365 device -> sector_size = root -> sectorsize ;
2363- device -> total_bytes = srcdev -> total_bytes ;
2364- device -> disk_total_bytes = srcdev -> disk_total_bytes ;
2366+ device -> total_bytes = btrfs_device_get_total_bytes (srcdev );
2367+ device -> disk_total_bytes = btrfs_device_get_disk_total_bytes (srcdev );
2368+ device -> bytes_used = btrfs_device_get_bytes_used (srcdev );
23652369 ASSERT (list_empty (& srcdev -> resized_list ));
23662370 device -> commit_total_bytes = srcdev -> commit_total_bytes ;
2367- device -> bytes_used = srcdev -> bytes_used ;
23682371 device -> commit_bytes_used = device -> bytes_used ;
23692372 device -> dev_root = fs_info -> dev_root ;
23702373 device -> bdev = bdev ;
@@ -2435,8 +2438,10 @@ static noinline int btrfs_update_device(struct btrfs_trans_handle *trans,
24352438 btrfs_set_device_io_align (leaf , dev_item , device -> io_align );
24362439 btrfs_set_device_io_width (leaf , dev_item , device -> io_width );
24372440 btrfs_set_device_sector_size (leaf , dev_item , device -> sector_size );
2438- btrfs_set_device_total_bytes (leaf , dev_item , device -> disk_total_bytes );
2439- btrfs_set_device_bytes_used (leaf , dev_item , device -> bytes_used );
2441+ btrfs_set_device_total_bytes (leaf , dev_item ,
2442+ btrfs_device_get_disk_total_bytes (device ));
2443+ btrfs_set_device_bytes_used (leaf , dev_item ,
2444+ btrfs_device_get_bytes_used (device ));
24402445 btrfs_mark_buffer_dirty (leaf );
24412446
24422447out :
@@ -2464,8 +2469,8 @@ static int __btrfs_grow_device(struct btrfs_trans_handle *trans,
24642469 btrfs_set_super_total_bytes (super_copy , old_total + diff );
24652470 device -> fs_devices -> total_rw_bytes += diff ;
24662471
2467- device -> total_bytes = new_size ;
2468- device -> disk_total_bytes = new_size ;
2472+ btrfs_device_set_total_bytes ( device , new_size ) ;
2473+ btrfs_device_set_disk_total_bytes ( device , new_size ) ;
24692474 btrfs_clear_space_info_full (device -> dev_root -> fs_info );
24702475 if (list_empty (& device -> resized_list ))
24712476 list_add_tail (& device -> resized_list ,
@@ -3110,11 +3115,12 @@ static int __btrfs_balance(struct btrfs_fs_info *fs_info)
31103115 /* step one make some room on all the devices */
31113116 devices = & fs_info -> fs_devices -> devices ;
31123117 list_for_each_entry (device , devices , dev_list ) {
3113- old_size = device -> total_bytes ;
3118+ old_size = btrfs_device_get_total_bytes ( device ) ;
31143119 size_to_free = div_factor (old_size , 1 );
31153120 size_to_free = min (size_to_free , (u64 )1 * 1024 * 1024 );
31163121 if (!device -> writeable ||
3117- device -> total_bytes - device -> bytes_used > size_to_free ||
3122+ btrfs_device_get_total_bytes (device ) -
3123+ btrfs_device_get_bytes_used (device ) > size_to_free ||
31183124 device -> is_tgtdev_for_dev_replace )
31193125 continue ;
31203126
@@ -3920,8 +3926,8 @@ int btrfs_shrink_device(struct btrfs_device *device, u64 new_size)
39203926 struct btrfs_key key ;
39213927 struct btrfs_super_block * super_copy = root -> fs_info -> super_copy ;
39223928 u64 old_total = btrfs_super_total_bytes (super_copy );
3923- u64 old_size = device -> total_bytes ;
3924- u64 diff = device -> total_bytes - new_size ;
3929+ u64 old_size = btrfs_device_get_total_bytes ( device ) ;
3930+ u64 diff = old_size - new_size ;
39253931
39263932 if (device -> is_tgtdev_for_dev_replace )
39273933 return - EINVAL ;
@@ -3934,7 +3940,7 @@ int btrfs_shrink_device(struct btrfs_device *device, u64 new_size)
39343940
39353941 lock_chunks (root );
39363942
3937- device -> total_bytes = new_size ;
3943+ btrfs_device_set_total_bytes ( device , new_size ) ;
39383944 if (device -> writeable ) {
39393945 device -> fs_devices -> total_rw_bytes -= diff ;
39403946 spin_lock (& root -> fs_info -> free_chunk_lock );
@@ -4000,7 +4006,7 @@ int btrfs_shrink_device(struct btrfs_device *device, u64 new_size)
40004006 ret = - ENOSPC ;
40014007 lock_chunks (root );
40024008
4003- device -> total_bytes = old_size ;
4009+ btrfs_device_set_total_bytes ( device , old_size ) ;
40044010 if (device -> writeable )
40054011 device -> fs_devices -> total_rw_bytes += diff ;
40064012 spin_lock (& root -> fs_info -> free_chunk_lock );
@@ -4018,7 +4024,7 @@ int btrfs_shrink_device(struct btrfs_device *device, u64 new_size)
40184024 }
40194025
40204026 lock_chunks (root );
4021- device -> disk_total_bytes = new_size ;
4027+ btrfs_device_set_disk_total_bytes ( device , new_size ) ;
40224028 if (list_empty (& device -> resized_list ))
40234029 list_add_tail (& device -> resized_list ,
40244030 & root -> fs_info -> fs_devices -> resized_devices );
@@ -4429,8 +4435,10 @@ static int __btrfs_alloc_chunk(struct btrfs_trans_handle *trans,
44294435 if (ret )
44304436 goto error_del_extent ;
44314437
4432- for (i = 0 ; i < map -> num_stripes ; i ++ )
4433- map -> stripes [i ].dev -> bytes_used += stripe_size ;
4438+ for (i = 0 ; i < map -> num_stripes ; i ++ ) {
4439+ num_bytes = map -> stripes [i ].dev -> bytes_used + stripe_size ;
4440+ btrfs_device_set_bytes_used (map -> stripes [i ].dev , num_bytes );
4441+ }
44344442
44354443 spin_lock (& extent_root -> fs_info -> free_chunk_lock );
44364444 extent_root -> fs_info -> free_chunk_space -= (stripe_size *
0 commit comments