{
        unsigned drop_inode_space = 0;
        unsigned dropped_extents = 0;
-       unsigned num_extents = 0;
+       unsigned num_extents;
 
-       num_extents = (unsigned)div64_u64(num_bytes +
-                                         BTRFS_MAX_EXTENT_SIZE - 1,
-                                         BTRFS_MAX_EXTENT_SIZE);
+       num_extents = count_max_extents(num_bytes);
        ASSERT(num_extents);
        ASSERT(BTRFS_I(inode)->outstanding_extents >= num_extents);
        BTRFS_I(inode)->outstanding_extents -= num_extents;
        struct btrfs_block_rsv *block_rsv = &fs_info->delalloc_block_rsv;
        u64 to_reserve = 0;
        u64 csum_bytes;
-       unsigned nr_extents = 0;
+       unsigned nr_extents;
        enum btrfs_reserve_flush_enum flush = BTRFS_RESERVE_FLUSH_ALL;
        int ret = 0;
        bool delalloc_lock = true;
        num_bytes = ALIGN(num_bytes, fs_info->sectorsize);
 
        spin_lock(&BTRFS_I(inode)->lock);
-       nr_extents = (unsigned)div64_u64(num_bytes +
-                                        BTRFS_MAX_EXTENT_SIZE - 1,
-                                        BTRFS_MAX_EXTENT_SIZE);
+       nr_extents = count_max_extents(num_bytes);
        BTRFS_I(inode)->outstanding_extents += nr_extents;
 
        nr_extents = 0;
 
 
        size = orig->end - orig->start + 1;
        if (size > BTRFS_MAX_EXTENT_SIZE) {
-               u64 num_extents;
+               u32 num_extents;
                u64 new_size;
 
                /*
                 * applies here, just in reverse.
                 */
                new_size = orig->end - split + 1;
-               num_extents = div64_u64(new_size + BTRFS_MAX_EXTENT_SIZE - 1,
-                                       BTRFS_MAX_EXTENT_SIZE);
+               num_extents = count_max_extents(new_size);
                new_size = split - orig->start;
-               num_extents += div64_u64(new_size + BTRFS_MAX_EXTENT_SIZE - 1,
-                                       BTRFS_MAX_EXTENT_SIZE);
-               if (div64_u64(size + BTRFS_MAX_EXTENT_SIZE - 1,
-                             BTRFS_MAX_EXTENT_SIZE) >= num_extents)
+               num_extents += count_max_extents(new_size);
+               if (count_max_extents(size) >= num_extents)
                        return;
        }
 
                                    struct extent_state *other)
 {
        u64 new_size, old_size;
-       u64 num_extents;
+       u32 num_extents;
 
        /* not delalloc, ignore it */
        if (!(other->state & EXTENT_DELALLOC))
         * this case.
         */
        old_size = other->end - other->start + 1;
-       num_extents = div64_u64(old_size + BTRFS_MAX_EXTENT_SIZE - 1,
-                               BTRFS_MAX_EXTENT_SIZE);
+       num_extents = count_max_extents(old_size);
        old_size = new->end - new->start + 1;
-       num_extents += div64_u64(old_size + BTRFS_MAX_EXTENT_SIZE - 1,
-                                BTRFS_MAX_EXTENT_SIZE);
-
-       if (div64_u64(new_size + BTRFS_MAX_EXTENT_SIZE - 1,
-                     BTRFS_MAX_EXTENT_SIZE) >= num_extents)
+       num_extents += count_max_extents(old_size);
+       if (count_max_extents(new_size) >= num_extents)
                return;
 
        spin_lock(&BTRFS_I(inode)->lock);
 {
        struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
        u64 len = state->end + 1 - state->start;
-       u64 num_extents = div64_u64(len + BTRFS_MAX_EXTENT_SIZE -1,
-                                   BTRFS_MAX_EXTENT_SIZE);
+       u32 num_extents = count_max_extents(len);
 
        spin_lock(&BTRFS_I(inode)->lock);
        if ((state->state & EXTENT_DEFRAG) && (*bits & EXTENT_DEFRAG))
                                           struct btrfs_dio_data *dio_data,
                                           const u64 len)
 {
-       unsigned num_extents;
+       unsigned num_extents = count_max_extents(len);
 
-       num_extents = (unsigned) div64_u64(len + BTRFS_MAX_EXTENT_SIZE - 1,
-                                          BTRFS_MAX_EXTENT_SIZE);
        /*
         * If we have an outstanding_extents count still set then we're
         * within our reservation, otherwise we need to adjust our inode
                ret = btrfs_delalloc_reserve_space(inode, offset, count);
                if (ret)
                        goto out;
-               dio_data.outstanding_extents = div64_u64(count +
-                                               BTRFS_MAX_EXTENT_SIZE - 1,
-                                               BTRFS_MAX_EXTENT_SIZE);
+               dio_data.outstanding_extents = count_max_extents(count);
 
                /*
                 * We need to know how many extents we reserved so that we can