--- initial
+++ final
@@ -1,85 +1,85 @@
 STATIC int xfs_trim_extents(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_daddr_t start, xfs_daddr_t end, xfs_daddr_t minlen, uint64_t *blocks_trimmed) {
   struct block_device *bdev = mp->m_ddev_targp->bt_bdev;
   struct xfs_btree_cur *cur;
   struct xfs_buf *agbp;
   struct xfs_perag *pag;
   int error;
   int i;
   pag = xfs_perag_get(mp, agno);
   /*
    * Force out the log.  This means any transactions that might have freed
    * space before we take the AGF buffer lock are now on disk, and the
    * volatile disk cache is flushed.
    */
   xfs_log_force(mp, XFS_LOG_SYNC);
   error = xfs_alloc_read_agf(mp, NULL, agno, 0, &agbp);
   if (error || !agbp) goto out_put_perag;
   cur = xfs_allocbt_init_cursor(mp, NULL, agbp, agno, XFS_BTNUM_CNT);
   /*
    * Look up the longest btree in the AGF and start with it.
    */
   error = xfs_alloc_lookup_ge(cur, 0, be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_longest), &i);
   if (error) goto out_del_cursor;
   /*
    * Loop until we are done with all extents that are large
    * enough to be worth discarding.
    */
   while (i) {
     xfs_agblock_t fbno;
     xfs_extlen_t flen;
     xfs_daddr_t dbno;
     xfs_extlen_t dlen;
     error = xfs_alloc_get_rec(cur, &fbno, &flen, &i);
     if (error) goto out_del_cursor;
     XFS_WANT_CORRUPTED_GOTO(mp, i == 1, out_del_cursor);
     ASSERT(flen <= be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_longest));
     /*
      * use daddr format for all range/len calculations as that is
      * the format the range/len variables are supplied in by
      * userspace.
      */
     dbno = XFS_AGB_TO_DADDR(mp, agno, fbno);
     dlen = XFS_FSB_TO_BB(mp, flen);
     /*
      * Too small?  Give up.
      */
     if (dlen < minlen) {
       trace_xfs_discard_toosmall(mp, agno, fbno, flen);
       goto out_del_cursor;
     }
     /*
      * If the extent is entirely outside of the range we are
      * supposed to discard skip it.  Do not bother to trim
      * down partially overlapping ranges for now.
      */
     if (dbno + dlen < start || dbno > end) {
       trace_xfs_discard_exclude(mp, agno, fbno, flen);
       goto next_extent;
     }
     /*
      * If any blocks in the range are still busy, skip the
      * discard and try again the next time.
      */
     if (xfs_extent_busy_search(mp, agno, fbno, flen)) {
       trace_xfs_discard_busy(mp, agno, fbno, flen);
       goto next_extent;
     }
     trace_xfs_discard_extent(mp, agno, fbno, flen);
     error = blkdev_issue_discard(bdev, dbno, dlen, GFP_NOFS, 0);
     if (error) goto out_del_cursor;
     *blocks_trimmed += flen;
   next_extent:
     error = xfs_btree_decrement(cur, 0, &i);
     if (error) goto out_del_cursor;
     if (fatal_signal_pending(current)) {
       error = -ERESTARTSYS;
       goto out_del_cursor;
     }
   }
 out_del_cursor:
-  xfs_btree_del_cursor(cur, error ? XFS_BTREE_ERROR : XFS_BTREE_NOERROR);
+  xfs_btree_del_cursor(cur, error);
   xfs_buf_relse(agbp);
 out_put_perag:
   xfs_perag_put(pag);
   return error;
 }<sep>@@
expression e,error;
@@

                xfs_btree_del_cursor(e, 
-                       (error ? XFS_BTREE_ERROR : XFS_BTREE_NOERROR)
+			error
		)