mutex_lock(&fs_info->chunk_mutex);
list_del_init(&device->dev_alloc_list);
device->fs_devices->rw_devices--;
+ btrfs_update_per_profile_avail(fs_info);
mutex_unlock(&fs_info->chunk_mutex);
}
list_add(&device->dev_alloc_list,
&fs_devices->alloc_list);
device->fs_devices->rw_devices++;
+ btrfs_update_per_profile_avail(fs_info);
mutex_unlock(&fs_info->chunk_mutex);
}
return ret;
*/
btrfs_clear_space_info_full(fs_info);
+ btrfs_update_per_profile_avail(fs_info);
mutex_unlock(&fs_info->chunk_mutex);
/* Add sysfs device entry */
if (seeding_dev) {
mutex_lock(&fs_info->chunk_mutex);
ret = init_first_rw_device(trans);
+ btrfs_update_per_profile_avail(fs_info);
mutex_unlock(&fs_info->chunk_mutex);
if (unlikely(ret)) {
btrfs_abort_transaction(trans, ret);
orig_super_total_bytes);
btrfs_set_super_num_devices(fs_info->super_copy,
orig_super_num_devices);
+ btrfs_update_per_profile_avail(fs_info);
mutex_unlock(&fs_info->chunk_mutex);
mutex_unlock(&fs_info->fs_devices->device_list_mutex);
error_trans:
if (list_empty(&device->post_commit_list))
list_add_tail(&device->post_commit_list,
&trans->transaction->dev_update_list);
+ btrfs_update_per_profile_avail(fs_info);
mutex_unlock(&fs_info->chunk_mutex);
btrfs_reserve_chunk_metadata(trans, false);
}
}
+ btrfs_update_per_profile_avail(fs_info);
mutex_unlock(&fs_info->chunk_mutex);
trans->removing_chunk = false;
atomic64_sub(free_diff, &fs_info->free_chunk_space);
}
+ btrfs_update_per_profile_avail(fs_info);
/*
* Once the device's size has been set to the new size, ensure all
* in-memory chunks are synced to disk so that the loop below sees them
WARN_ON(diff > old_total);
btrfs_set_super_total_bytes(super_copy,
round_down(old_total - diff, fs_info->sectorsize));
+ btrfs_update_per_profile_avail(fs_info);
mutex_unlock(&fs_info->chunk_mutex);
btrfs_reserve_chunk_metadata(trans, false);
check_raid56_incompat_flag(info, type);
check_raid1c34_incompat_flag(info, type);
+ btrfs_update_per_profile_avail(info);
+
return block_group;
}
}
/* Ensure all chunks have corresponding dev extents */
- return verify_chunk_dev_extent_mapping(fs_info);
+ ret = verify_chunk_dev_extent_mapping(fs_info);
+ if (ret < 0)
+ return ret;
+
+ mutex_lock(&fs_info->chunk_mutex);
+ btrfs_update_per_profile_avail(fs_info);
+ mutex_unlock(&fs_info->chunk_mutex);
+ return 0;
}
/*