2019-11-03 22:04:25 +03:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
class blockstore_init_meta
|
|
|
|
{
|
|
|
|
blockstore *bs;
|
2019-11-04 01:42:40 +03:00
|
|
|
uint8_t *metadata_buffer = NULL;
|
2019-11-03 22:04:25 +03:00
|
|
|
uint64_t metadata_read = 0;
|
|
|
|
int prev = 0, prev_done = 0, done_len = 0, submitted = 0, done_cnt = 0;
|
2019-11-14 01:13:07 +03:00
|
|
|
void handle_entries(struct clean_disk_entry* entries, int count, int block_order);
|
2019-11-13 21:17:04 +03:00
|
|
|
void handle_event(ring_data_t *data);
|
2019-11-03 22:04:25 +03:00
|
|
|
public:
|
2019-11-05 02:43:21 +03:00
|
|
|
blockstore_init_meta(blockstore *bs);
|
|
|
|
int loop();
|
2019-11-03 22:04:25 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
class blockstore_init_journal
|
|
|
|
{
|
|
|
|
blockstore *bs;
|
2019-11-04 01:42:40 +03:00
|
|
|
uint8_t *journal_buffer = NULL;
|
|
|
|
int step = 0;
|
|
|
|
uint32_t crc32_last = 0;
|
2019-11-15 14:09:41 +03:00
|
|
|
bool started = false;
|
2019-11-04 01:42:40 +03:00
|
|
|
uint64_t done_pos = 0, journal_pos = 0;
|
|
|
|
uint64_t cur_skip = 0;
|
2019-11-04 15:46:33 +03:00
|
|
|
bool wrapped = false;
|
2019-11-04 01:42:40 +03:00
|
|
|
int submitted = 0, done_buf = 0, done_len = 0;
|
2019-11-04 15:46:33 +03:00
|
|
|
int handle_journal_part(void *buf, uint64_t len);
|
2019-11-13 21:17:04 +03:00
|
|
|
void handle_event(ring_data_t *data);
|
2019-11-03 22:04:25 +03:00
|
|
|
public:
|
|
|
|
blockstore_init_journal(blockstore* bs);
|
2019-11-05 02:43:21 +03:00
|
|
|
int loop();
|
2019-11-03 22:04:25 +03:00
|
|
|
};
|