STATIC int64_t
 xfs_bnobt_key_diff(
-       struct xfs_btree_cur    *cur,
-       union xfs_btree_key     *key)
+       struct xfs_btree_cur            *cur,
+       const union xfs_btree_key       *key)
 {
-       xfs_alloc_rec_incore_t  *rec = &cur->bc_rec.a;
-       xfs_alloc_key_t         *kp = &key->alloc;
+       struct xfs_alloc_rec_incore     *rec = &cur->bc_rec.a;
+       const struct xfs_alloc_rec      *kp = &key->alloc;
 
        return (int64_t)be32_to_cpu(kp->ar_startblock) - rec->ar_startblock;
 }
 
 STATIC int64_t
 xfs_cntbt_key_diff(
-       struct xfs_btree_cur    *cur,
-       union xfs_btree_key     *key)
+       struct xfs_btree_cur            *cur,
+       const union xfs_btree_key       *key)
 {
-       xfs_alloc_rec_incore_t  *rec = &cur->bc_rec.a;
-       xfs_alloc_key_t         *kp = &key->alloc;
-       int64_t                 diff;
+       struct xfs_alloc_rec_incore     *rec = &cur->bc_rec.a;
+       const struct xfs_alloc_rec      *kp = &key->alloc;
+       int64_t                         diff;
 
        diff = (int64_t)be32_to_cpu(kp->ar_blockcount) - rec->ar_blockcount;
        if (diff)
 
 STATIC int64_t
 xfs_bnobt_diff_two_keys(
-       struct xfs_btree_cur    *cur,
-       union xfs_btree_key     *k1,
-       union xfs_btree_key     *k2)
+       struct xfs_btree_cur            *cur,
+       const union xfs_btree_key       *k1,
+       const union xfs_btree_key       *k2)
 {
        return (int64_t)be32_to_cpu(k1->alloc.ar_startblock) -
                          be32_to_cpu(k2->alloc.ar_startblock);
 
 STATIC int64_t
 xfs_cntbt_diff_two_keys(
-       struct xfs_btree_cur    *cur,
-       union xfs_btree_key     *k1,
-       union xfs_btree_key     *k2)
+       struct xfs_btree_cur            *cur,
+       const union xfs_btree_key       *k1,
+       const union xfs_btree_key       *k2)
 {
-       int64_t                 diff;
+       int64_t                         diff;
 
        diff =  be32_to_cpu(k1->alloc.ar_blockcount) -
                be32_to_cpu(k2->alloc.ar_blockcount);
 
 
 STATIC int64_t
 xfs_bmbt_key_diff(
-       struct xfs_btree_cur    *cur,
-       union xfs_btree_key     *key)
+       struct xfs_btree_cur            *cur,
+       const union xfs_btree_key       *key)
 {
        return (int64_t)be64_to_cpu(key->bmbt.br_startoff) -
                                      cur->bc_rec.b.br_startoff;
 
 STATIC int64_t
 xfs_bmbt_diff_two_keys(
-       struct xfs_btree_cur    *cur,
-       union xfs_btree_key     *k1,
-       union xfs_btree_key     *k2)
+       struct xfs_btree_cur            *cur,
+       const union xfs_btree_key       *k1,
+       const union xfs_btree_key       *k2)
 {
-       uint64_t                a = be64_to_cpu(k1->bmbt.br_startoff);
-       uint64_t                b = be64_to_cpu(k2->bmbt.br_startoff);
+       uint64_t                        a = be64_to_cpu(k1->bmbt.br_startoff);
+       uint64_t                        b = be64_to_cpu(k2->bmbt.br_startoff);
 
        /*
         * Note: This routine previously casted a and b to int64 and subtracted
 
 
        /* difference between key value and cursor value */
        int64_t (*key_diff)(struct xfs_btree_cur *cur,
-                             union xfs_btree_key *key);
+                           const union xfs_btree_key *key);
 
        /*
         * Difference between key2 and key1 -- positive if key1 > key2,
         * negative if key1 < key2, and zero if equal.
         */
        int64_t (*diff_two_keys)(struct xfs_btree_cur *cur,
-                                  union xfs_btree_key *key1,
-                                  union xfs_btree_key *key2);
+                                const union xfs_btree_key *key1,
+                                const union xfs_btree_key *key2);
 
        const struct xfs_buf_ops        *buf_ops;
 
 
 
 STATIC int64_t
 xfs_inobt_key_diff(
-       struct xfs_btree_cur    *cur,
-       union xfs_btree_key     *key)
+       struct xfs_btree_cur            *cur,
+       const union xfs_btree_key       *key)
 {
        return (int64_t)be32_to_cpu(key->inobt.ir_startino) -
                          cur->bc_rec.i.ir_startino;
 
 STATIC int64_t
 xfs_inobt_diff_two_keys(
-       struct xfs_btree_cur    *cur,
-       union xfs_btree_key     *k1,
-       union xfs_btree_key     *k2)
+       struct xfs_btree_cur            *cur,
+       const union xfs_btree_key       *k1,
+       const union xfs_btree_key       *k2)
 {
        return (int64_t)be32_to_cpu(k1->inobt.ir_startino) -
                          be32_to_cpu(k2->inobt.ir_startino);
 
 
 STATIC int64_t
 xfs_refcountbt_key_diff(
-       struct xfs_btree_cur    *cur,
-       union xfs_btree_key     *key)
+       struct xfs_btree_cur            *cur,
+       const union xfs_btree_key       *key)
 {
        struct xfs_refcount_irec        *rec = &cur->bc_rec.rc;
-       struct xfs_refcount_key         *kp = &key->refc;
+       const struct xfs_refcount_key   *kp = &key->refc;
 
        return (int64_t)be32_to_cpu(kp->rc_startblock) - rec->rc_startblock;
 }
 
 STATIC int64_t
 xfs_refcountbt_diff_two_keys(
-       struct xfs_btree_cur    *cur,
-       union xfs_btree_key     *k1,
-       union xfs_btree_key     *k2)
+       struct xfs_btree_cur            *cur,
+       const union xfs_btree_key       *k1,
+       const union xfs_btree_key       *k2)
 {
        return (int64_t)be32_to_cpu(k1->refc.rc_startblock) -
                          be32_to_cpu(k2->refc.rc_startblock);
 
 
 STATIC int64_t
 xfs_rmapbt_key_diff(
-       struct xfs_btree_cur    *cur,
-       union xfs_btree_key     *key)
+       struct xfs_btree_cur            *cur,
+       const union xfs_btree_key       *key)
 {
-       struct xfs_rmap_irec    *rec = &cur->bc_rec.r;
-       struct xfs_rmap_key     *kp = &key->rmap;
-       __u64                   x, y;
-       int64_t                 d;
+       struct xfs_rmap_irec            *rec = &cur->bc_rec.r;
+       const struct xfs_rmap_key       *kp = &key->rmap;
+       __u64                           x, y;
+       int64_t                         d;
 
        d = (int64_t)be32_to_cpu(kp->rm_startblock) - rec->rm_startblock;
        if (d)
 
 STATIC int64_t
 xfs_rmapbt_diff_two_keys(
-       struct xfs_btree_cur    *cur,
-       union xfs_btree_key     *k1,
-       union xfs_btree_key     *k2)
+       struct xfs_btree_cur            *cur,
+       const union xfs_btree_key       *k1,
+       const union xfs_btree_key       *k2)
 {
-       struct xfs_rmap_key     *kp1 = &k1->rmap;
-       struct xfs_rmap_key     *kp2 = &k2->rmap;
-       int64_t                 d;
-       __u64                   x, y;
+       const struct xfs_rmap_key       *kp1 = &k1->rmap;
+       const struct xfs_rmap_key       *kp2 = &k2->rmap;
+       int64_t                         d;
+       __u64                           x, y;
 
        d = (int64_t)be32_to_cpu(kp1->rm_startblock) -
                       be32_to_cpu(kp2->rm_startblock);