diff options
author | Darrick J. Wong <darrick.wong@oracle.com> | 2016-09-18 20:24:36 -0400 |
---|---|---|
committer | Dave Chinner <david@fromorbit.com> | 2016-09-18 20:24:36 -0400 |
commit | a1d46cffaf40e04acb0ecab14980ece3ef1ab933 (patch) | |
tree | c5ff51f2ef4c4e235eb2ab5bbd2d8f868dba8e94 | |
parent | cd00158ce34d6e2c42d8892e8499779b8ac1d2bf (diff) |
xfs: remove xfs_btree_bigkey
Remove the xfs_btree_bigkey mess and simply make xfs_btree_key big enough
to hold both keys in-core.
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.c | 12 | ||||
-rw-r--r-- | fs/xfs/libxfs/xfs_btree.h | 24 |
2 files changed, 12 insertions, 24 deletions
diff --git a/fs/xfs/libxfs/xfs_btree.c b/fs/xfs/libxfs/xfs_btree.c index 08569792fe20..7be8d9cda2b6 100644 --- a/fs/xfs/libxfs/xfs_btree.c +++ b/fs/xfs/libxfs/xfs_btree.c | |||
@@ -2070,7 +2070,7 @@ __xfs_btree_updkeys( | |||
2070 | struct xfs_buf *bp0, | 2070 | struct xfs_buf *bp0, |
2071 | bool force_all) | 2071 | bool force_all) |
2072 | { | 2072 | { |
2073 | union xfs_btree_bigkey key; /* keys from current level */ | 2073 | union xfs_btree_key key; /* keys from current level */ |
2074 | union xfs_btree_key *lkey; /* keys from the next level up */ | 2074 | union xfs_btree_key *lkey; /* keys from the next level up */ |
2075 | union xfs_btree_key *hkey; | 2075 | union xfs_btree_key *hkey; |
2076 | union xfs_btree_key *nlkey; /* keys from the next level up */ | 2076 | union xfs_btree_key *nlkey; /* keys from the next level up */ |
@@ -2086,7 +2086,7 @@ __xfs_btree_updkeys( | |||
2086 | 2086 | ||
2087 | trace_xfs_btree_updkeys(cur, level, bp0); | 2087 | trace_xfs_btree_updkeys(cur, level, bp0); |
2088 | 2088 | ||
2089 | lkey = (union xfs_btree_key *)&key; | 2089 | lkey = &key; |
2090 | hkey = xfs_btree_high_key_from_key(cur, lkey); | 2090 | hkey = xfs_btree_high_key_from_key(cur, lkey); |
2091 | xfs_btree_get_keys(cur, block, lkey); | 2091 | xfs_btree_get_keys(cur, block, lkey); |
2092 | for (level++; level < cur->bc_nlevels; level++) { | 2092 | for (level++; level < cur->bc_nlevels; level++) { |
@@ -3226,7 +3226,7 @@ xfs_btree_insrec( | |||
3226 | struct xfs_buf *bp; /* buffer for block */ | 3226 | struct xfs_buf *bp; /* buffer for block */ |
3227 | union xfs_btree_ptr nptr; /* new block ptr */ | 3227 | union xfs_btree_ptr nptr; /* new block ptr */ |
3228 | struct xfs_btree_cur *ncur; /* new btree cursor */ | 3228 | struct xfs_btree_cur *ncur; /* new btree cursor */ |
3229 | union xfs_btree_bigkey nkey; /* new block key */ | 3229 | union xfs_btree_key nkey; /* new block key */ |
3230 | union xfs_btree_key *lkey; | 3230 | union xfs_btree_key *lkey; |
3231 | int optr; /* old key/record index */ | 3231 | int optr; /* old key/record index */ |
3232 | int ptr; /* key/record index */ | 3232 | int ptr; /* key/record index */ |
@@ -3241,7 +3241,7 @@ xfs_btree_insrec( | |||
3241 | XFS_BTREE_TRACE_ARGIPR(cur, level, *ptrp, &rec); | 3241 | XFS_BTREE_TRACE_ARGIPR(cur, level, *ptrp, &rec); |
3242 | 3242 | ||
3243 | ncur = NULL; | 3243 | ncur = NULL; |
3244 | lkey = (union xfs_btree_key *)&nkey; | 3244 | lkey = &nkey; |
3245 | 3245 | ||
3246 | /* | 3246 | /* |
3247 | * If we have an external root pointer, and we've made it to the | 3247 | * If we have an external root pointer, and we've made it to the |
@@ -3444,14 +3444,14 @@ xfs_btree_insert( | |||
3444 | union xfs_btree_ptr nptr; /* new block number (split result) */ | 3444 | union xfs_btree_ptr nptr; /* new block number (split result) */ |
3445 | struct xfs_btree_cur *ncur; /* new cursor (split result) */ | 3445 | struct xfs_btree_cur *ncur; /* new cursor (split result) */ |
3446 | struct xfs_btree_cur *pcur; /* previous level's cursor */ | 3446 | struct xfs_btree_cur *pcur; /* previous level's cursor */ |
3447 | union xfs_btree_bigkey bkey; /* key of block to insert */ | 3447 | union xfs_btree_key bkey; /* key of block to insert */ |
3448 | union xfs_btree_key *key; | 3448 | union xfs_btree_key *key; |
3449 | union xfs_btree_rec rec; /* record to insert */ | 3449 | union xfs_btree_rec rec; /* record to insert */ |
3450 | 3450 | ||
3451 | level = 0; | 3451 | level = 0; |
3452 | ncur = NULL; | 3452 | ncur = NULL; |
3453 | pcur = cur; | 3453 | pcur = cur; |
3454 | key = (union xfs_btree_key *)&bkey; | 3454 | key = &bkey; |
3455 | 3455 | ||
3456 | xfs_btree_set_ptr_null(cur, &nptr); | 3456 | xfs_btree_set_ptr_null(cur, &nptr); |
3457 | 3457 | ||
diff --git a/fs/xfs/libxfs/xfs_btree.h b/fs/xfs/libxfs/xfs_btree.h index 04d0865e5e6d..f41a4cfff740 100644 --- a/fs/xfs/libxfs/xfs_btree.h +++ b/fs/xfs/libxfs/xfs_btree.h | |||
@@ -37,30 +37,18 @@ union xfs_btree_ptr { | |||
37 | __be64 l; /* long form ptr */ | 37 | __be64 l; /* long form ptr */ |
38 | }; | 38 | }; |
39 | 39 | ||
40 | union xfs_btree_key { | ||
41 | struct xfs_bmbt_key bmbt; | ||
42 | xfs_bmdr_key_t bmbr; /* bmbt root block */ | ||
43 | xfs_alloc_key_t alloc; | ||
44 | struct xfs_inobt_key inobt; | ||
45 | struct xfs_rmap_key rmap; | ||
46 | }; | ||
47 | |||
48 | /* | 40 | /* |
49 | * In-core key that holds both low and high keys for overlapped btrees. | 41 | * The in-core btree key. Overlapping btrees actually store two keys |
50 | * The two keys are packed next to each other on disk, so do the same | 42 | * per pointer, so we reserve enough memory to hold both. The __*bigkey |
51 | * in memory. Preserve the existing xfs_btree_key as a single key to | 43 | * items should never be accessed directly. |
52 | * avoid the mental model breakage that would happen if we passed a | ||
53 | * bigkey into a function that operates on a single key. | ||
54 | */ | 44 | */ |
55 | union xfs_btree_bigkey { | 45 | union xfs_btree_key { |
56 | struct xfs_bmbt_key bmbt; | 46 | struct xfs_bmbt_key bmbt; |
57 | xfs_bmdr_key_t bmbr; /* bmbt root block */ | 47 | xfs_bmdr_key_t bmbr; /* bmbt root block */ |
58 | xfs_alloc_key_t alloc; | 48 | xfs_alloc_key_t alloc; |
59 | struct xfs_inobt_key inobt; | 49 | struct xfs_inobt_key inobt; |
60 | struct { | 50 | struct xfs_rmap_key rmap; |
61 | struct xfs_rmap_key rmap; | 51 | struct xfs_rmap_key __rmap_bigkey[2]; |
62 | struct xfs_rmap_key rmap_hi; | ||
63 | }; | ||
64 | }; | 52 | }; |
65 | 53 | ||
66 | union xfs_btree_rec { | 54 | union xfs_btree_rec { |