recovery_journal
vdo_add_recovery_journal_entry(completion->vdo->recovery_journal, data_vio);
struct vdo *vdo, struct recovery_journal *journal,
struct recovery_journal *journal)
struct recovery_journal *journal = block_map->journal;
struct recovery_journal *journal;
struct recovery_journal *journal, nonce_t nonce,
struct recovery_journal *journal);
vdo_add_recovery_journal_entry(completion->vdo->recovery_journal, data_vio);
result = vdo_decode_recovery_journal(vdo->states.recovery_journal,
&vdo->recovery_journal);
vdo->recovery_journal, vdo->states.vdo.nonce,
vdo_drain_recovery_journal(vdo->recovery_journal,
vdo_open_recovery_journal(vdo->recovery_journal, vdo->depot,
vdo->recovery_journal);
vdo_drain_recovery_journal(vdo->recovery_journal, VDO_ADMIN_STATE_SAVING,
vdo_resume_recovery_journal(vdo->recovery_journal, completion);
vdo->recovery_journal->origin =
&states->recovery_journal);
encode_recovery_journal_state_7_0(buffer, offset, states->recovery_journal);
states->recovery_journal = (struct recovery_journal_state_7_0) {
struct recovery_journal_state_7_0 recovery_journal;
static bool prepare_to_assign_entry(struct recovery_journal *journal)
static atomic_t *get_decrement_counter(struct recovery_journal *journal,
static void write_blocks(struct recovery_journal *journal);
static void schedule_block_write(struct recovery_journal *journal,
static void update_usages(struct recovery_journal *journal, struct data_vio *data_vio)
struct recovery_journal *journal = block->journal;
static void assign_entries(struct recovery_journal *journal)
static bool is_journal_zone_locked(struct recovery_journal *journal,
struct recovery_journal *journal = block->journal;
struct recovery_journal *journal = context;
static void notify_commit_waiters(struct recovery_journal *journal)
static void recycle_journal_blocks(struct recovery_journal *journal)
struct recovery_journal *journal = block->journal;
struct recovery_journal *journal = block->journal;
struct recovery_journal *journal = block->journal;
struct recovery_journal *journal = block->journal;
void vdo_release_recovery_journal_block_reference(struct recovery_journal *journal,
static void write_blocks(struct recovery_journal *journal)
void vdo_add_recovery_journal_entry(struct recovery_journal *journal,
static bool is_lock_locked(struct recovery_journal *journal, block_count_t lock_number,
static void reap_recovery_journal(struct recovery_journal *journal)
void vdo_acquire_recovery_journal_block_reference(struct recovery_journal *journal,
void vdo_release_journal_entry_lock(struct recovery_journal *journal,
check_for_drain_complete(container_of(state, struct recovery_journal, state));
void vdo_drain_recovery_journal(struct recovery_journal *journal,
void vdo_resume_recovery_journal(struct recovery_journal *journal,
block_count_t vdo_get_recovery_journal_logical_blocks_used(const struct recovery_journal *journal)
vdo_get_recovery_journal_statistics(const struct recovery_journal *journal)
void vdo_dump_recovery_journal_statistics(const struct recovery_journal *journal)
static struct recovery_journal_block * __must_check pop_free_list(struct recovery_journal *journal)
static void assert_on_journal_thread(struct recovery_journal *journal,
static inline bool has_block_waiters(struct recovery_journal *journal)
static void recycle_journal_blocks(struct recovery_journal *journal);
static void notify_commit_waiters(struct recovery_journal *journal);
static inline bool is_read_only(struct recovery_journal *journal)
static void check_for_drain_complete(struct recovery_journal *journal)
static void enter_journal_read_only_mode(struct recovery_journal *journal,
sequence_number_t vdo_get_recovery_journal_current_sequence_number(struct recovery_journal *journal)
static inline sequence_number_t get_recovery_journal_head(const struct recovery_journal *journal)
static void check_slab_journal_commit_threshold(struct recovery_journal *journal)
static void reap_recovery_journal(struct recovery_journal *journal);
static void assign_entries(struct recovery_journal *journal);
static void finish_reaping(struct recovery_journal *journal)
struct recovery_journal *journal = completion->parent;
struct recovery_journal *journal = completion->parent;
struct recovery_journal *journal = vio->completion.parent;
static void initialize_journal_state(struct recovery_journal *journal)
struct recovery_journal *journal = (struct recovery_journal *) completion->parent;
static int __must_check initialize_lock_counter(struct recovery_journal *journal,
static void set_journal_tail(struct recovery_journal *journal, sequence_number_t tail)
static int initialize_recovery_block(struct vdo *vdo, struct recovery_journal *journal,
static inline atomic_t *get_zone_count_ptr(struct recovery_journal *journal,
struct recovery_journal **journal_ptr)
struct recovery_journal *journal;
void vdo_free_recovery_journal(struct recovery_journal *journal)
void vdo_initialize_recovery_journal_post_repair(struct recovery_journal *journal,
block_count_t vdo_get_journal_block_map_data_blocks_used(struct recovery_journal *journal)
static inline u16 *get_counter(struct recovery_journal *journal,
thread_id_t vdo_get_recovery_journal_thread_id(struct recovery_journal *journal)
void vdo_open_recovery_journal(struct recovery_journal *journal,
vdo_record_recovery_journal(const struct recovery_journal *journal)
static bool advance_tail(struct recovery_journal *journal)
static void initialize_lock_count(struct recovery_journal *journal)
struct recovery_journal *journal;
vdo_get_recovery_journal_block_number(const struct recovery_journal *journal,
vdo_compute_recovery_journal_check_byte(const struct recovery_journal *journal,
struct recovery_journal **journal_ptr);
void vdo_free_recovery_journal(struct recovery_journal *journal);
void vdo_initialize_recovery_journal_post_repair(struct recovery_journal *journal,
vdo_get_journal_block_map_data_blocks_used(struct recovery_journal *journal);
thread_id_t __must_check vdo_get_recovery_journal_thread_id(struct recovery_journal *journal);
void vdo_open_recovery_journal(struct recovery_journal *journal,
vdo_get_recovery_journal_current_sequence_number(struct recovery_journal *journal);
vdo_record_recovery_journal(const struct recovery_journal *journal);
void vdo_add_recovery_journal_entry(struct recovery_journal *journal,
void vdo_acquire_recovery_journal_block_reference(struct recovery_journal *journal,
void vdo_release_recovery_journal_block_reference(struct recovery_journal *journal,
void vdo_release_journal_entry_lock(struct recovery_journal *journal,
void vdo_drain_recovery_journal(struct recovery_journal *journal,
void vdo_resume_recovery_journal(struct recovery_journal *journal,
vdo_get_recovery_journal_logical_blocks_used(const struct recovery_journal *journal);
vdo_get_recovery_journal_statistics(const struct recovery_journal *journal);
void vdo_dump_recovery_journal_statistics(const struct recovery_journal *journal);
get_recovery_journal_block_header(struct recovery_journal *journal, char *data,
static bool __must_check is_valid_recovery_journal_block(const struct recovery_journal *journal,
static bool __must_check is_exact_recovery_journal_block(const struct recovery_journal *journal,
struct recovery_journal *journal = repair->completion.vdo->recovery_journal;
struct recovery_journal *journal,
struct recovery_journal *journal = vdo->recovery_journal;
struct recovery_journal *journal = vdo->recovery_journal;
struct recovery_journal *journal = repair->completion.vdo->recovery_journal;
struct recovery_journal *journal = vdo->recovery_journal;
vdo_initialize_recovery_journal_post_repair(vdo->recovery_journal,
static struct packed_journal_sector * __must_check get_sector(struct recovery_journal *journal,
sector = get_sector(repair->completion.vdo->recovery_journal,
struct recovery_journal *journal = vdo->recovery_journal;
repair->logical_blocks_used = vdo->recovery_journal->logical_blocks_used;
repair->block_map_data_blocks = vdo->recovery_journal->block_map_data_blocks;
if (journal->recovery_journal != NULL) {
vdo_acquire_recovery_journal_block_reference(journal->recovery_journal,
journal->recovery_journal = slab->allocator->depot->vdo->recovery_journal;
if (journal->recovery_journal != NULL) {
vdo_release_recovery_journal_block_reference(journal->recovery_journal,
struct recovery_journal *recovery_journal;
vdo_get_journal_block_map_data_blocks_used(vdo->recovery_journal));
vdo_get_journal_block_map_data_blocks_used(vdo->recovery_journal));
struct recovery_journal *journal = vdo->recovery_journal;
vdo_dump_recovery_journal_statistics(vdo->recovery_journal);
vdo_free_recovery_journal(vdo_forget(vdo->recovery_journal));
vdo->states.recovery_journal = vdo_record_recovery_journal(vdo->recovery_journal);
struct recovery_journal *recovery_journal;