diff options
author | David Sterba <dsterba@suse.cz> | 2015-01-16 11:21:12 -0500 |
---|---|---|
committer | David Sterba <dsterba@suse.cz> | 2015-03-03 11:23:57 -0500 |
commit | f8c269d7223f6b63cc5936eb191bc3b170d24342 (patch) | |
tree | 2e82cc23da9f436bbb6fde058b3321619f990db2 | |
parent | 351810c1d2aafa288af61844d877941d516fb031 (diff) |
btrfs: cleanup 64bit/32bit divs, compile time constants
Switch to div_u64 if the divisor is a numeric constant or sum of
sizeof()s. We can remove a few instances of do_div that has the hidden
semtantics of changing the 1st argument.
Small power-of-two divisors are converted to bitshifts, large values are
kept intact for clarity.
Signed-off-by: David Sterba <dsterba@suse.cz>
-rw-r--r-- | fs/btrfs/dev-replace.c | 6 | ||||
-rw-r--r-- | fs/btrfs/disk-io.c | 2 | ||||
-rw-r--r-- | fs/btrfs/extent-tree.c | 15 | ||||
-rw-r--r-- | fs/btrfs/free-space-cache.c | 8 | ||||
-rw-r--r-- | fs/btrfs/math.h | 6 | ||||
-rw-r--r-- | fs/btrfs/super.c | 2 |
6 files changed, 18 insertions, 21 deletions
diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c index 5ec03d999c37..0573848c7333 100644 --- a/fs/btrfs/dev-replace.c +++ b/fs/btrfs/dev-replace.c | |||
@@ -670,8 +670,8 @@ void btrfs_dev_replace_status(struct btrfs_fs_info *fs_info, | |||
670 | case BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED: | 670 | case BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED: |
671 | case BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED: | 671 | case BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED: |
672 | srcdev = dev_replace->srcdev; | 672 | srcdev = dev_replace->srcdev; |
673 | args->status.progress_1000 = div64_u64(dev_replace->cursor_left, | 673 | args->status.progress_1000 = div_u64(dev_replace->cursor_left, |
674 | div64_u64(btrfs_device_get_total_bytes(srcdev), 1000)); | 674 | div_u64(btrfs_device_get_total_bytes(srcdev), 1000)); |
675 | break; | 675 | break; |
676 | } | 676 | } |
677 | btrfs_dev_replace_unlock(dev_replace); | 677 | btrfs_dev_replace_unlock(dev_replace); |
@@ -806,7 +806,7 @@ static int btrfs_dev_replace_kthread(void *data) | |||
806 | btrfs_dev_replace_status(fs_info, status_args); | 806 | btrfs_dev_replace_status(fs_info, status_args); |
807 | progress = status_args->status.progress_1000; | 807 | progress = status_args->status.progress_1000; |
808 | kfree(status_args); | 808 | kfree(status_args); |
809 | do_div(progress, 10); | 809 | progress = div_u64(progress, 10); |
810 | printk_in_rcu(KERN_INFO | 810 | printk_in_rcu(KERN_INFO |
811 | "BTRFS: continuing dev_replace from %s (devid %llu) to %s @%u%%\n", | 811 | "BTRFS: continuing dev_replace from %s (devid %llu) to %s @%u%%\n", |
812 | dev_replace->srcdev->missing ? "<missing disk>" : | 812 | dev_replace->srcdev->missing ? "<missing disk>" : |
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 41b320e235d7..73b152138221 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
@@ -2277,7 +2277,7 @@ int open_ctree(struct super_block *sb, | |||
2277 | fs_info->free_chunk_space = 0; | 2277 | fs_info->free_chunk_space = 0; |
2278 | fs_info->tree_mod_log = RB_ROOT; | 2278 | fs_info->tree_mod_log = RB_ROOT; |
2279 | fs_info->commit_interval = BTRFS_DEFAULT_COMMIT_INTERVAL; | 2279 | fs_info->commit_interval = BTRFS_DEFAULT_COMMIT_INTERVAL; |
2280 | fs_info->avg_delayed_ref_runtime = div64_u64(NSEC_PER_SEC, 64); | 2280 | fs_info->avg_delayed_ref_runtime = NSEC_PER_SEC >> 6; /* div by 64 */ |
2281 | /* readahead state */ | 2281 | /* readahead state */ |
2282 | INIT_RADIX_TREE(&fs_info->reada_tree, GFP_NOFS & ~__GFP_WAIT); | 2282 | INIT_RADIX_TREE(&fs_info->reada_tree, GFP_NOFS & ~__GFP_WAIT); |
2283 | spin_lock_init(&fs_info->reada_lock); | 2283 | spin_lock_init(&fs_info->reada_lock); |
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 28ce5c8004d4..2cb32bc45bcc 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -2561,8 +2561,7 @@ static noinline int __btrfs_run_delayed_refs(struct btrfs_trans_handle *trans, | |||
2561 | */ | 2561 | */ |
2562 | spin_lock(&delayed_refs->lock); | 2562 | spin_lock(&delayed_refs->lock); |
2563 | avg = fs_info->avg_delayed_ref_runtime * 3 + runtime; | 2563 | avg = fs_info->avg_delayed_ref_runtime * 3 + runtime; |
2564 | avg = div64_u64(avg, 4); | 2564 | fs_info->avg_delayed_ref_runtime = avg >> 2; /* div by 4 */ |
2565 | fs_info->avg_delayed_ref_runtime = avg; | ||
2566 | spin_unlock(&delayed_refs->lock); | 2565 | spin_unlock(&delayed_refs->lock); |
2567 | } | 2566 | } |
2568 | return 0; | 2567 | return 0; |
@@ -2624,7 +2623,7 @@ static inline u64 heads_to_leaves(struct btrfs_root *root, u64 heads) | |||
2624 | * We don't ever fill up leaves all the way so multiply by 2 just to be | 2623 | * We don't ever fill up leaves all the way so multiply by 2 just to be |
2625 | * closer to what we're really going to want to ouse. | 2624 | * closer to what we're really going to want to ouse. |
2626 | */ | 2625 | */ |
2627 | return div64_u64(num_bytes, BTRFS_LEAF_DATA_SIZE(root)); | 2626 | return div_u64(num_bytes, BTRFS_LEAF_DATA_SIZE(root)); |
2628 | } | 2627 | } |
2629 | 2628 | ||
2630 | int btrfs_check_space_for_delayed_refs(struct btrfs_trans_handle *trans, | 2629 | int btrfs_check_space_for_delayed_refs(struct btrfs_trans_handle *trans, |
@@ -3193,7 +3192,7 @@ static int cache_save_setup(struct btrfs_block_group_cache *block_group, | |||
3193 | struct inode *inode = NULL; | 3192 | struct inode *inode = NULL; |
3194 | u64 alloc_hint = 0; | 3193 | u64 alloc_hint = 0; |
3195 | int dcs = BTRFS_DC_ERROR; | 3194 | int dcs = BTRFS_DC_ERROR; |
3196 | int num_pages = 0; | 3195 | u64 num_pages = 0; |
3197 | int retries = 0; | 3196 | int retries = 0; |
3198 | int ret = 0; | 3197 | int ret = 0; |
3199 | 3198 | ||
@@ -3277,7 +3276,7 @@ again: | |||
3277 | * taking up quite a bit since it's not folded into the other space | 3276 | * taking up quite a bit since it's not folded into the other space |
3278 | * cache. | 3277 | * cache. |
3279 | */ | 3278 | */ |
3280 | num_pages = (int)div64_u64(block_group->key.offset, 256 * 1024 * 1024); | 3279 | num_pages = div_u64(block_group->key.offset, 256 * 1024 * 1024); |
3281 | if (!num_pages) | 3280 | if (!num_pages) |
3282 | num_pages = 1; | 3281 | num_pages = 1; |
3283 | 3282 | ||
@@ -4770,10 +4769,10 @@ static u64 calc_global_metadata_size(struct btrfs_fs_info *fs_info) | |||
4770 | 4769 | ||
4771 | num_bytes = (data_used >> fs_info->sb->s_blocksize_bits) * | 4770 | num_bytes = (data_used >> fs_info->sb->s_blocksize_bits) * |
4772 | csum_size * 2; | 4771 | csum_size * 2; |
4773 | num_bytes += div64_u64(data_used + meta_used, 50); | 4772 | num_bytes += div_u64(data_used + meta_used, 50); |
4774 | 4773 | ||
4775 | if (num_bytes * 3 > meta_used) | 4774 | if (num_bytes * 3 > meta_used) |
4776 | num_bytes = div64_u64(meta_used, 3); | 4775 | num_bytes = div_u64(meta_used, 3); |
4777 | 4776 | ||
4778 | return ALIGN(num_bytes, fs_info->extent_root->nodesize << 10); | 4777 | return ALIGN(num_bytes, fs_info->extent_root->nodesize << 10); |
4779 | } | 4778 | } |
@@ -5039,7 +5038,7 @@ static u64 calc_csum_metadata_size(struct inode *inode, u64 num_bytes, | |||
5039 | else | 5038 | else |
5040 | BTRFS_I(inode)->csum_bytes -= num_bytes; | 5039 | BTRFS_I(inode)->csum_bytes -= num_bytes; |
5041 | csum_size = BTRFS_LEAF_DATA_SIZE(root) - sizeof(struct btrfs_item); | 5040 | csum_size = BTRFS_LEAF_DATA_SIZE(root) - sizeof(struct btrfs_item); |
5042 | num_csums_per_leaf = (int)div64_u64(csum_size, | 5041 | num_csums_per_leaf = (int)div_u64(csum_size, |
5043 | sizeof(struct btrfs_csum_item) + | 5042 | sizeof(struct btrfs_csum_item) + |
5044 | sizeof(struct btrfs_disk_key)); | 5043 | sizeof(struct btrfs_disk_key)); |
5045 | num_csums = (int)div64_u64(BTRFS_I(inode)->csum_bytes, root->sectorsize); | 5044 | num_csums = (int)div64_u64(BTRFS_I(inode)->csum_bytes, root->sectorsize); |
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c index 96611fed552f..cb84923561e4 100644 --- a/fs/btrfs/free-space-cache.c +++ b/fs/btrfs/free-space-cache.c | |||
@@ -1537,7 +1537,7 @@ static void recalculate_thresholds(struct btrfs_free_space_ctl *ctl) | |||
1537 | max_bytes = MAX_CACHE_BYTES_PER_GIG; | 1537 | max_bytes = MAX_CACHE_BYTES_PER_GIG; |
1538 | else | 1538 | else |
1539 | max_bytes = MAX_CACHE_BYTES_PER_GIG * | 1539 | max_bytes = MAX_CACHE_BYTES_PER_GIG * |
1540 | div64_u64(size, 1024 * 1024 * 1024); | 1540 | div_u64(size, 1024 * 1024 * 1024); |
1541 | 1541 | ||
1542 | /* | 1542 | /* |
1543 | * we want to account for 1 more bitmap than what we have so we can make | 1543 | * we want to account for 1 more bitmap than what we have so we can make |
@@ -1552,14 +1552,14 @@ static void recalculate_thresholds(struct btrfs_free_space_ctl *ctl) | |||
1552 | } | 1552 | } |
1553 | 1553 | ||
1554 | /* | 1554 | /* |
1555 | * we want the extent entry threshold to always be at most 1/2 the maxw | 1555 | * we want the extent entry threshold to always be at most 1/2 the max |
1556 | * bytes we can have, or whatever is less than that. | 1556 | * bytes we can have, or whatever is less than that. |
1557 | */ | 1557 | */ |
1558 | extent_bytes = max_bytes - bitmap_bytes; | 1558 | extent_bytes = max_bytes - bitmap_bytes; |
1559 | extent_bytes = min_t(u64, extent_bytes, div64_u64(max_bytes, 2)); | 1559 | extent_bytes = min_t(u64, extent_bytes, max_bytes >> 1); |
1560 | 1560 | ||
1561 | ctl->extents_thresh = | 1561 | ctl->extents_thresh = |
1562 | div64_u64(extent_bytes, (sizeof(struct btrfs_free_space))); | 1562 | div_u64(extent_bytes, sizeof(struct btrfs_free_space)); |
1563 | } | 1563 | } |
1564 | 1564 | ||
1565 | static inline void __bitmap_clear_bits(struct btrfs_free_space_ctl *ctl, | 1565 | static inline void __bitmap_clear_bits(struct btrfs_free_space_ctl *ctl, |
diff --git a/fs/btrfs/math.h b/fs/btrfs/math.h index b7816cefbd13..1b10a3cd1195 100644 --- a/fs/btrfs/math.h +++ b/fs/btrfs/math.h | |||
@@ -28,8 +28,7 @@ static inline u64 div_factor(u64 num, int factor) | |||
28 | if (factor == 10) | 28 | if (factor == 10) |
29 | return num; | 29 | return num; |
30 | num *= factor; | 30 | num *= factor; |
31 | do_div(num, 10); | 31 | return div_u64(num, 10); |
32 | return num; | ||
33 | } | 32 | } |
34 | 33 | ||
35 | static inline u64 div_factor_fine(u64 num, int factor) | 34 | static inline u64 div_factor_fine(u64 num, int factor) |
@@ -37,8 +36,7 @@ static inline u64 div_factor_fine(u64 num, int factor) | |||
37 | if (factor == 100) | 36 | if (factor == 100) |
38 | return num; | 37 | return num; |
39 | num *= factor; | 38 | num *= factor; |
40 | do_div(num, 100); | 39 | return div_u64(num, 100); |
41 | return num; | ||
42 | } | 40 | } |
43 | 41 | ||
44 | #endif | 42 | #endif |
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 100a0442c413..530a0baa7c71 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c | |||
@@ -1704,7 +1704,7 @@ static int btrfs_calc_avail_data_space(struct btrfs_root *root, u64 *free_bytes) | |||
1704 | avail_space = device->total_bytes - device->bytes_used; | 1704 | avail_space = device->total_bytes - device->bytes_used; |
1705 | 1705 | ||
1706 | /* align with stripe_len */ | 1706 | /* align with stripe_len */ |
1707 | do_div(avail_space, BTRFS_STRIPE_LEN); | 1707 | avail_space = div_u64(avail_space, BTRFS_STRIPE_LEN); |
1708 | avail_space *= BTRFS_STRIPE_LEN; | 1708 | avail_space *= BTRFS_STRIPE_LEN; |
1709 | 1709 | ||
1710 | /* | 1710 | /* |