# SPDX-License-Identifier: GPL-2.0
# extract linker version number from stdin and turn into single number
{
-From eb8409071a1d47e3593cfe077107ac46853182ab Mon Sep 17 00:00:00 2001
-From: "Darrick J. Wong" <darrick.wong@oracle.com>
-Date: Thu, 19 Nov 2020 15:17:50 -0800
-Subject: xfs: revert "xfs: fix rmap key and record comparison functions"
-
-This reverts commit 6ff646b2ceb0eec916101877f38da0b73e3a5b7f.
-
-Your maintainer committed a major braino in the rmap code by adding the
-attr fork, bmbt, and unwritten extent usage bits into rmap record key
-comparisons. While XFS uses the usage bits *in the rmap records* for
-cross-referencing metadata in xfs_scrub and xfs_repair, it only needs
-the owner and offset information to distinguish between reverse mappings
-of the same physical extent into the data fork of a file at multiple
-offsets. The other bits are not important for key comparisons for index
-lookups, and never have been.
-
-Eric Sandeen reports that this causes regressions in generic/299, so
-undo this patch before it does more damage.
-
-Reported-by: Eric Sandeen <sandeen@sandeen.net>
-Fixes: 6ff646b2ceb0 ("xfs: fix rmap key and record comparison functions")
-Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
-Reviewed-by: Eric Sandeen <sandeen@redhat.com>
----
- fs/xfs/libxfs/xfs_rmap_btree.c | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/fs/xfs/libxfs/xfs_rmap_btree.c b/fs/xfs/libxfs/xfs_rmap_btree.c
-index 577a66381327c..beb81c84a9375 100644
---- a/fs/xfs/libxfs/xfs_rmap_btree.c
-+++ b/fs/xfs/libxfs/xfs_rmap_btree.c
-@@ -243,8 +243,8 @@ xfs_rmapbt_key_diff(
- else if (y > x)
- return -1;
-
-- x = be64_to_cpu(kp->rm_offset);
-- y = xfs_rmap_irec_offset_pack(rec);
-+ x = XFS_RMAP_OFF(be64_to_cpu(kp->rm_offset));
-+ y = rec->rm_offset;
- if (x > y)
- return 1;
- else if (y > x)
-@@ -275,8 +275,8 @@ xfs_rmapbt_diff_two_keys(
- else if (y > x)
- return -1;
-
-- x = be64_to_cpu(kp1->rm_offset);
-- y = be64_to_cpu(kp2->rm_offset);
-+ x = XFS_RMAP_OFF(be64_to_cpu(kp1->rm_offset));
-+ y = XFS_RMAP_OFF(be64_to_cpu(kp2->rm_offset));
- if (x > y)
- return 1;
- else if (y > x)
-@@ -390,8 +390,8 @@ xfs_rmapbt_keys_inorder(
- return 1;
- else if (a > b)
- return 0;
-- a = be64_to_cpu(k1->rmap.rm_offset);
-- b = be64_to_cpu(k2->rmap.rm_offset);
-+ a = XFS_RMAP_OFF(be64_to_cpu(k1->rmap.rm_offset));
-+ b = XFS_RMAP_OFF(be64_to_cpu(k2->rmap.rm_offset));
- if (a <= b)
- return 1;
- return 0;
-@@ -420,8 +420,8 @@ xfs_rmapbt_recs_inorder(
- return 1;
- else if (a > b)
- return 0;
-- a = be64_to_cpu(r1->rmap.rm_offset);
-- b = be64_to_cpu(r2->rmap.rm_offset);
-+ a = XFS_RMAP_OFF(be64_to_cpu(r1->rmap.rm_offset));
-+ b = XFS_RMAP_OFF(be64_to_cpu(r2->rmap.rm_offset));
- if (a <= b)
- return 1;
- return 0;
---
-cgit 1.2.3-1.el7
-