Lines Matching full:token

27 void btrfs_init_map_token(struct btrfs_map_token *token, struct extent_buffer *eb)  in btrfs_init_map_token()  argument
29 token->eb = eb; in btrfs_init_map_token()
30 token->kaddr = folio_address(eb->folios[0]); in btrfs_init_map_token()
31 token->offset = 0; in btrfs_init_map_token()
43 * Generic helpers with a token (cached address of the most recently accessed
59 u##bits btrfs_get_token_##bits(struct btrfs_map_token *token, \
63 const unsigned long idx = get_eb_folio_index(token->eb, member_offset); \
64 const unsigned long oil = get_eb_offset_in_folio(token->eb, \
66 const int unit_size = folio_size(token->eb->folios[0]); \
67 const int unit_shift = folio_shift(token->eb->folios[0]); \
72 ASSERT(token); \
73 ASSERT(token->kaddr); \
74 ASSERT(check_setget_bounds(token->eb, ptr, off, size)); \
75 if (token->offset <= member_offset && \
76 member_offset + size <= token->offset + unit_size) { \
77 return get_unaligned_le##bits(token->kaddr + oil); \
79 token->kaddr = folio_address(token->eb->folios[idx]); \
80 token->offset = idx << unit_shift; \
82 return get_unaligned_le##bits(token->kaddr + oil); \
84 memcpy(lebytes, token->kaddr + oil, part); \
85 token->kaddr = folio_address(token->eb->folios[idx + 1]); \
86 token->offset = (idx + 1) << unit_shift; \
87 memcpy(lebytes + part, token->kaddr, size - part); \
112 void btrfs_set_token_##bits(struct btrfs_map_token *token, \
117 const unsigned long idx = get_eb_folio_index(token->eb, member_offset); \
118 const unsigned long oil = get_eb_offset_in_folio(token->eb, \
120 const int unit_size = folio_size(token->eb->folios[0]); \
121 const int unit_shift = folio_shift(token->eb->folios[0]); \
126 ASSERT(token); \
127 ASSERT(token->kaddr); \
128 ASSERT(check_setget_bounds(token->eb, ptr, off, size)); \
129 if (token->offset <= member_offset && \
130 member_offset + size <= token->offset + unit_size) { \
131 put_unaligned_le##bits(val, token->kaddr + oil); \
134 token->kaddr = folio_address(token->eb->folios[idx]); \
135 token->offset = idx << unit_shift; \
138 put_unaligned_le##bits(val, token->kaddr + oil); \
142 memcpy(token->kaddr + oil, lebytes, part); \
143 token->kaddr = folio_address(token->eb->folios[idx + 1]); \
144 token->offset = (idx + 1) << unit_shift; \
145 memcpy(token->kaddr, lebytes + part, size - part); \