aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarrick J. Wong <darrick.wong@oracle.com>2016-08-26 01:59:50 -0400
committerDave Chinner <david@fromorbit.com>2016-08-26 01:59:50 -0400
commit722278997bc964349e23e7061d541f8df3133a04 (patch)
tree0efa953e0bf26f58c248dd5babe68a5f19004d56
parentda1f039d6947b1a49f13b39a6de0df2a3e9e1ed1 (diff)
xfs: fix some key handling problems in _btree_simple_query_range
We only need the record's high key for the first record that we look at; for all records, we /definitely/ need the regular record key. Therefore, fix how the simple range query function gets its keys. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Dave Chinner <david@fromorbit.com>
-rw-r--r--fs/xfs/libxfs/xfs_btree.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/xfs/libxfs/xfs_btree.c b/fs/xfs/libxfs/xfs_btree.c
index 33f14067c320..b70d9f918156 100644
--- a/fs/xfs/libxfs/xfs_btree.c
+++ b/fs/xfs/libxfs/xfs_btree.c
@@ -4563,10 +4563,10 @@ xfs_btree_simple_query_range(
4563 error = xfs_btree_get_rec(cur, &recp, &stat); 4563 error = xfs_btree_get_rec(cur, &recp, &stat);
4564 if (error || !stat) 4564 if (error || !stat)
4565 break; 4565 break;
4566 cur->bc_ops->init_high_key_from_rec(&rec_key, recp);
4567 4566
4568 /* Skip if high_key(rec) < low_key. */ 4567 /* Skip if high_key(rec) < low_key. */
4569 if (firstrec) { 4568 if (firstrec) {
4569 cur->bc_ops->init_high_key_from_rec(&rec_key, recp);
4570 firstrec = false; 4570 firstrec = false;
4571 diff = cur->bc_ops->diff_two_keys(cur, low_key, 4571 diff = cur->bc_ops->diff_two_keys(cur, low_key,
4572 &rec_key); 4572 &rec_key);
@@ -4575,6 +4575,7 @@ xfs_btree_simple_query_range(
4575 } 4575 }
4576 4576
4577 /* Stop if high_key < low_key(rec). */ 4577 /* Stop if high_key < low_key(rec). */
4578 cur->bc_ops->init_key_from_rec(&rec_key, recp);
4578 diff = cur->bc_ops->diff_two_keys(cur, &rec_key, high_key); 4579 diff = cur->bc_ops->diff_two_keys(cur, &rec_key, high_key);
4579 if (diff > 0) 4580 if (diff > 0)
4580 break; 4581 break;