diff options
author | David Sterba <dsterba@suse.com> | 2019-08-09 11:48:21 -0400 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2019-09-09 08:59:16 -0400 |
commit | c82f823c9b006c31059341af41da9f8b2e3e64d9 (patch) | |
tree | b6b9204325f78f83df3a1a871ee4a7abc6e29b07 /fs/btrfs/struct-funcs.c | |
parent | 48bc39501a549ec978c8aad28eb89ca3a2a7ca03 (diff) |
btrfs: tie extent buffer and it's token together
Further simplifaction of the get/set helpers is possible when the token
is uniquely tied to an extent buffer. A condition and an assignment can
be avoided.
The initializations are moved closer to the first use when the extent
buffer is valid. There's one exception in __push_leaf_left where the
token is reused.
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/struct-funcs.c')
-rw-r--r-- | fs/btrfs/struct-funcs.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/fs/btrfs/struct-funcs.c b/fs/btrfs/struct-funcs.c index 3a29b911d2e2..73f7987143df 100644 --- a/fs/btrfs/struct-funcs.c +++ b/fs/btrfs/struct-funcs.c | |||
@@ -53,9 +53,9 @@ u##bits btrfs_get_token_##bits(const struct extent_buffer *eb, \ | |||
53 | u##bits res; \ | 53 | u##bits res; \ |
54 | \ | 54 | \ |
55 | ASSERT(token); \ | 55 | ASSERT(token); \ |
56 | ASSERT(token->eb == eb); \ | ||
56 | \ | 57 | \ |
57 | if (token->kaddr && token->offset <= offset && \ | 58 | if (token->kaddr && token->offset <= offset && \ |
58 | token->eb == eb && \ | ||
59 | (token->offset + PAGE_SIZE >= offset + size)) { \ | 59 | (token->offset + PAGE_SIZE >= offset + size)) { \ |
60 | kaddr = token->kaddr; \ | 60 | kaddr = token->kaddr; \ |
61 | p = kaddr + part_offset - token->offset; \ | 61 | p = kaddr + part_offset - token->offset; \ |
@@ -74,7 +74,6 @@ u##bits btrfs_get_token_##bits(const struct extent_buffer *eb, \ | |||
74 | res = get_unaligned_le##bits(p + off); \ | 74 | res = get_unaligned_le##bits(p + off); \ |
75 | token->kaddr = kaddr; \ | 75 | token->kaddr = kaddr; \ |
76 | token->offset = map_start; \ | 76 | token->offset = map_start; \ |
77 | token->eb = eb; \ | ||
78 | return res; \ | 77 | return res; \ |
79 | } \ | 78 | } \ |
80 | u##bits btrfs_get_##bits(const struct extent_buffer *eb, \ | 79 | u##bits btrfs_get_##bits(const struct extent_buffer *eb, \ |
@@ -117,9 +116,9 @@ void btrfs_set_token_##bits(struct extent_buffer *eb, \ | |||
117 | int size = sizeof(u##bits); \ | 116 | int size = sizeof(u##bits); \ |
118 | \ | 117 | \ |
119 | ASSERT(token); \ | 118 | ASSERT(token); \ |
119 | ASSERT(token->eb == eb); \ | ||
120 | \ | 120 | \ |
121 | if (token->kaddr && token->offset <= offset && \ | 121 | if (token->kaddr && token->offset <= offset && \ |
122 | token->eb == eb && \ | ||
123 | (token->offset + PAGE_SIZE >= offset + size)) { \ | 122 | (token->offset + PAGE_SIZE >= offset + size)) { \ |
124 | kaddr = token->kaddr; \ | 123 | kaddr = token->kaddr; \ |
125 | p = kaddr + part_offset - token->offset; \ | 124 | p = kaddr + part_offset - token->offset; \ |
@@ -139,7 +138,6 @@ void btrfs_set_token_##bits(struct extent_buffer *eb, \ | |||
139 | put_unaligned_le##bits(val, p + off); \ | 138 | put_unaligned_le##bits(val, p + off); \ |
140 | token->kaddr = kaddr; \ | 139 | token->kaddr = kaddr; \ |
141 | token->offset = map_start; \ | 140 | token->offset = map_start; \ |
142 | token->eb = eb; \ | ||
143 | } \ | 141 | } \ |
144 | void btrfs_set_##bits(struct extent_buffer *eb, void *ptr, \ | 142 | void btrfs_set_##bits(struct extent_buffer *eb, void *ptr, \ |
145 | unsigned long off, u##bits val) \ | 143 | unsigned long off, u##bits val) \ |