@@ -134,28 +134,37 @@ static inline enum bch_data_type bch2_bkey_ptr_data_type(struct bkey_s_c k,
134134 }
135135}
136136
137- static inline void bch2_extent_ptr_to_bp (struct bch_fs * c , struct bch_dev * ca ,
137+ static inline void __bch2_extent_ptr_to_bp (struct bch_fs * c , struct bch_dev * ca ,
138138 enum btree_id btree_id , unsigned level ,
139139 struct bkey_s_c k , struct extent_ptr_decoded p ,
140140 const union bch_extent_entry * entry ,
141- struct bpos * bucket_pos , struct bch_backpointer * bp )
141+ struct bpos * bucket_pos , struct bch_backpointer * bp ,
142+ u64 sectors )
142143{
143- enum bch_data_type data_type = bch2_bkey_ptr_data_type (k , p , entry );
144- s64 sectors = level ? btree_sectors (c ) : k .k -> size ;
145144 u32 bucket_offset ;
146-
147145 * bucket_pos = PTR_BUCKET_POS_OFFSET (ca , & p .ptr , & bucket_offset );
148146 * bp = (struct bch_backpointer ) {
149147 .btree_id = btree_id ,
150148 .level = level ,
151- .data_type = data_type ,
149+ .data_type = bch2_bkey_ptr_data_type ( k , p , entry ) ,
152150 .bucket_offset = ((u64 ) bucket_offset << MAX_EXTENT_COMPRESS_RATIO_SHIFT ) +
153151 p .crc .offset ,
154- .bucket_len = ptr_disk_sectors ( sectors , p ) ,
152+ .bucket_len = sectors ,
155153 .pos = k .k -> p ,
156154 };
157155}
158156
157+ static inline void bch2_extent_ptr_to_bp (struct bch_fs * c , struct bch_dev * ca ,
158+ enum btree_id btree_id , unsigned level ,
159+ struct bkey_s_c k , struct extent_ptr_decoded p ,
160+ const union bch_extent_entry * entry ,
161+ struct bpos * bucket_pos , struct bch_backpointer * bp )
162+ {
163+ u64 sectors = ptr_disk_sectors (level ? btree_sectors (c ) : k .k -> size , p );
164+
165+ __bch2_extent_ptr_to_bp (c , ca , btree_id , level , k , p , entry , bucket_pos , bp , sectors );
166+ }
167+
159168int bch2_get_next_backpointer (struct btree_trans * , struct bch_dev * ca , struct bpos , int ,
160169 struct bpos * , struct bch_backpointer * , unsigned );
161170struct bkey_s_c bch2_backpointer_get_key (struct btree_trans * , struct btree_iter * ,
0 commit comments