xfs_defer_init(args->trans->t_dfops, args->firstblock);
                error = xfs_bunmapi(args->trans, args->dp, lblkno, blkcnt,
                                    XFS_BMAPI_ATTRFORK, 1, args->firstblock,
-                                   args->trans->t_dfops, &done);
+                                   &done);
                if (error)
                        goto out_defer_cancel;
                xfs_defer_ijoin(args->trans->t_dfops, args->dp);
 
  */
 int                                            /* error */
 __xfs_bunmapi(
-       xfs_trans_t             *tp,            /* transaction pointer */
+       struct xfs_trans        *tp,            /* transaction pointer */
        struct xfs_inode        *ip,            /* incore inode */
        xfs_fileoff_t           start,          /* first file offset deleted */
        xfs_filblks_t           *rlen,          /* i/o: amount remaining */
        int                     flags,          /* misc flags */
        xfs_extnum_t            nexts,          /* number of extents max */
-       xfs_fsblock_t           *firstblock,    /* first allocated block
+       xfs_fsblock_t           *firstblock)    /* first allocated block
                                                   controls a.g. for allocs */
-       struct xfs_defer_ops    *dfops)         /* i/o: deferred updates */
 {
-       xfs_btree_cur_t         *cur;           /* bmap btree cursor */
-       xfs_bmbt_irec_t         del;            /* extent being deleted */
+       struct xfs_defer_ops    *dfops = tp ? tp->t_dfops : NULL;
+       struct xfs_btree_cur    *cur;           /* bmap btree cursor */
+       struct xfs_bmbt_irec    del;            /* extent being deleted */
        int                     error;          /* error return value */
        xfs_extnum_t            extno;          /* extent number in list */
-       xfs_bmbt_irec_t         got;            /* current extent record */
+       struct xfs_bmbt_irec    got;            /* current extent record */
        xfs_ifork_t             *ifp;           /* inode fork pointer */
        int                     isrt;           /* freeing in rt area */
        int                     logflags;       /* transaction logging flags */
        xfs_extlen_t            mod;            /* rt extent offset */
-       xfs_mount_t             *mp;            /* mount structure */
+       struct xfs_mount        *mp;            /* mount structure */
        int                     tmp_logflags;   /* partial logging flags */
        int                     wasdel;         /* was a delayed alloc extent */
        int                     whichfork;      /* data or attribute fork */
        int                     flags,
        xfs_extnum_t            nexts,
        xfs_fsblock_t           *firstblock,
-       struct xfs_defer_ops    *dfops,
        int                     *done)
 {
        int                     error;
 
-       error = __xfs_bunmapi(tp, ip, bno, &len, flags, nexts, firstblock,
-                       dfops);
+       error = __xfs_bunmapi(tp, ip, bno, &len, flags, nexts, firstblock);
        *done = (len == 0);
        return error;
 }
                break;
        case XFS_BMAP_UNMAP:
                error = __xfs_bunmapi(tp, ip, startoff, blockcount,
-                               XFS_BMAPI_REMAP, 1, &firstfsb, dfops);
+                               XFS_BMAPI_REMAP, 1, &firstfsb);
                break;
        default:
                ASSERT(0);
 
                struct xfs_bmbt_irec *mval, int *nmap);
 int    __xfs_bunmapi(struct xfs_trans *tp, struct xfs_inode *ip,
                xfs_fileoff_t bno, xfs_filblks_t *rlen, int flags,
-               xfs_extnum_t nexts, xfs_fsblock_t *firstblock,
-               struct xfs_defer_ops *dfops);
+               xfs_extnum_t nexts, xfs_fsblock_t *firstblock);
 int    xfs_bunmapi(struct xfs_trans *tp, struct xfs_inode *ip,
                xfs_fileoff_t bno, xfs_filblks_t len, int flags,
                xfs_extnum_t nexts, xfs_fsblock_t *firstblock,
-               struct xfs_defer_ops *dfops, int *done);
+               int *done);
 int    xfs_bmap_del_extent_delay(struct xfs_inode *ip, int whichfork,
                struct xfs_iext_cursor *cur, struct xfs_bmbt_irec *got,
                struct xfs_bmbt_irec *del);
 
                 */
                error = xfs_bunmapi(tp, dp, dead_blkno, count,
                                    xfs_bmapi_aflag(w), 0, args->firstblock,
-                                   args->trans->t_dfops, &done);
+                                   &done);
                if (error == -ENOSPC) {
                        if (w != XFS_DATA_FORK)
                                break;
 
 
        /* Unmap the fsblock(s). */
        error = xfs_bunmapi(tp, dp, da, args->geo->fsbcount, 0, 0,
-                           args->firstblock, args->trans->t_dfops, &done);
+                           args->firstblock, &done);
        if (error) {
                /*
                 * ENOSPC actually can happen if we're in a removename with no
 
        xfs_defer_init(&dfops, &firstfsb);
        tp->t_dfops = &dfops;
        error = xfs_bunmapi(tp, ip, startoffset_fsb, len_fsb, 0, 2, &firstfsb,
-                       tp->t_dfops, done);
+                           done);
        if (error)
                goto out_bmap_cancel;
 
 
                tp->t_dfops = &dfops;
                error = xfs_bunmapi(tp, ip, first_unmap_block, unmap_len, flags,
                                    XFS_ITRUNC_MAX_EXTENTS, &first_block,
-                                   tp->t_dfops, &done);
+                                   &done);
                if (error)
                        goto out_bmap_cancel;
 
 
                tp->t_dfops = &dfops;
                rlen = del.br_blockcount;
                error = __xfs_bunmapi(tp, ip, del.br_startoff, &rlen, 0, 1,
-                               &firstfsb, tp->t_dfops);
+                               &firstfsb);
                if (error)
                        goto out_defer;
 
        while (rlen) {
                xfs_defer_init(&dfops, &firstfsb);
                tp->t_dfops = &dfops;
-               error = __xfs_bunmapi(tp, ip, destoff, &rlen, 0, 1,
-                               &firstfsb, tp->t_dfops);
+               error = __xfs_bunmapi(tp, ip, destoff, &rlen, 0, 1, &firstfsb);
                if (error)
                        goto out_defer;
 
 
        /*
         * Unmap the dead block(s) to the dfops.
         */
-       error = xfs_bunmapi(tp, ip, 0, size, 0, nmaps,
-                           &first_block, tp->t_dfops, &done);
+       error = xfs_bunmapi(tp, ip, 0, size, 0, nmaps, &first_block, &done);
        if (error)
                goto error_bmap_cancel;
        ASSERT(done);