int will_compress;
        int compress_type = root->fs_info->compress_type;
 
-       /* if this is a small write inside eof, kick off a defragbot */
-       if (end <= BTRFS_I(inode)->disk_i_size && (end - start + 1) < 16 * 1024)
+       /* if this is a small write inside eof, kick off a defrag */
+       if ((end - start + 1) < 16 * 1024 &&
+           (start > 0 || end + 1 < BTRFS_I(inode)->disk_i_size))
                btrfs_add_inode_defrag(NULL, inode);
 
        actual_end = min_t(u64, isize, end + 1);
        ret = 0;
 
        /* if this is a small write inside eof, kick off defrag */
-       if (end <= BTRFS_I(inode)->disk_i_size && num_bytes < 64 * 1024)
+       if (num_bytes < 64 * 1024 &&
+           (start > 0 || end + 1 < BTRFS_I(inode)->disk_i_size))
                btrfs_add_inode_defrag(trans, inode);
 
        if (start == 0) {