Signed-off-by: Chris Mason <chris.mason@oracle.com>
        u64 nr = 0;
        u64 cur_byte;
        u64 old_size;
+       unsigned long rem;
        struct btrfs_block_group_cache *cache;
        struct btrfs_block_group_item *item;
        struct btrfs_fs_info *info = root->fs_info;
                                      struct btrfs_block_group_item);
 
                btrfs_set_disk_block_group_used(leaf, item, 0);
-               if (nr % 3) {
+               div_long_long_rem(nr, 3, &rem);
+               if (rem) {
                        btrfs_set_disk_block_group_flags(leaf, item,
                                                 BTRFS_BLOCK_GROUP_DATA);
                } else {
 
        int ret = 0;
 
        if (for_del)
-               thresh = (total * 90) / 100;
+               thresh = total * 90;
        else
-               thresh = (total * 85) / 100;
+               thresh = total * 85;
+
+       do_div(thresh, 100);
 
        spin_lock(&root->fs_info->delalloc_lock);
        if (used + root->fs_info->delalloc_bytes + num_required > thresh)
                ret = -EFBIG;
                goto out_unlock;
        }
-       new_size = (new_size / root->sectorsize) * root->sectorsize;
+
+       do_div(new_size, root->sectorsize);
+       new_size *= root->sectorsize;
 
 printk("new size is %Lu\n", new_size);
        if (new_size > old_size) {