aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.cz>2015-01-16 11:21:12 -0500
committerDavid Sterba <dsterba@suse.cz>2015-03-03 11:23:57 -0500
commitf8c269d7223f6b63cc5936eb191bc3b170d24342 (patch)
tree2e82cc23da9f436bbb6fde058b3321619f990db2
parent351810c1d2aafa288af61844d877941d516fb031 (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.c6
-rw-r--r--fs/btrfs/disk-io.c2
-rw-r--r--fs/btrfs/extent-tree.c15
-rw-r--r--fs/btrfs/free-space-cache.c8
-rw-r--r--fs/btrfs/math.h6
-rw-r--r--fs/btrfs/super.c2
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
2630int btrfs_check_space_for_delayed_refs(struct btrfs_trans_handle *trans, 2629int 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
1565static inline void __bitmap_clear_bits(struct btrfs_free_space_ctl *ctl, 1565static 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
35static inline u64 div_factor_fine(u64 num, int factor) 34static 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 /*