| /* SPDX-License-Identifier: GPL-2.0 */ |
| #ifndef _BCACHEFS_BTREE_WRITE_BUFFER_TYPES_H |
| #define _BCACHEFS_BTREE_WRITE_BUFFER_TYPES_H |
| |
| #include "journal_types.h" |
| |
| #define BTREE_WRITE_BUFERED_VAL_U64s_MAX 4 |
| #define BTREE_WRITE_BUFERED_U64s_MAX (BKEY_U64s + BTREE_WRITE_BUFERED_VAL_U64s_MAX) |
| |
| struct btree_write_buffered_key { |
| u64 journal_seq; |
| unsigned journal_offset; |
| enum btree_id btree; |
| __BKEY_PADDED(k, BTREE_WRITE_BUFERED_VAL_U64s_MAX); |
| }; |
| |
| union btree_write_buffer_state { |
| struct { |
| atomic64_t counter; |
| }; |
| |
| struct { |
| u64 v; |
| }; |
| |
| struct { |
| u64 nr:23; |
| u64 idx:1; |
| u64 ref0:20; |
| u64 ref1:20; |
| }; |
| }; |
| |
| struct btree_write_buffer { |
| struct mutex flush_lock; |
| struct journal_entry_pin journal_pin; |
| |
| union btree_write_buffer_state state; |
| size_t size; |
| |
| struct btree_write_buffered_key *keys[2]; |
| }; |
| |
| #endif /* _BCACHEFS_BTREE_WRITE_BUFFER_TYPES_H */ |