*
* This is overestimating in most cases.
*/
- qgroup_rsv_size = (u64)outstanding_extents * fs_info->nodesize;
+ qgroup_rsv_size = ((u64)outstanding_extents << fs_info->nodesize_bits);
spin_lock(&block_rsv->lock);
block_rsv->size = reserve_size;
* for an inode update.
*/
*meta_reserve += inode_update;
- *qgroup_reserve = nr_extents * fs_info->nodesize;
+ *qgroup_reserve = (nr_extents << fs_info->nodesize_bits);
}
int btrfs_delalloc_reserve_metadata(struct btrfs_inode *inode, u64 num_bytes,
continue;
}
spin_unlock_irqrestore(&subpage->lock, flags);
- cur = page_start + cur_bit * fs_info->sectorsize;
+ cur = page_start + (cur_bit << fs_info->sectorsize_bits);
eb = find_extent_buffer(fs_info, cur);
ASSERT(eb);
index += ins_size;
ins_size /= csum_size;
- total_bytes += ins_size * fs_info->sectorsize;
+ total_bytes += (ins_size << fs_info->sectorsize_bits);
if (total_bytes < sums->len) {
btrfs_release_path(path);
* and * 2 since we have two trees to COW.
*/
reserve_level = max_t(int, 1, btrfs_root_level(root_item));
- min_reserved = fs_info->nodesize * reserve_level * 2;
+ min_reserved = (reserve_level << fs_info->nodesize_bits) * 2;
memset(&next_key, 0, sizeof(next_key));
while (1) {
nr_levels = max(btrfs_header_level(root->node) - block->level, 0) + 1;
- num_bytes = fs_info->nodesize * nr_levels;
+ num_bytes = (nr_levels << fs_info->nodesize_bits);
ret = refill_metadata_space(trans, rc, num_bytes);
if (ret) {
btrfs_put_root(root);
* the appropriate flushing if need be.
*/
if (num_items && root != fs_info->chunk_root) {
- qgroup_reserved = num_items * fs_info->nodesize;
+ qgroup_reserved = (num_items << fs_info->nodesize_bits);
/*
* Use prealloc for now, as there might be a currently running
* transaction that could free this reserved space prematurely