mirror of
https://github.com/Zygo/bees.git
synced 2025-07-01 00:02:27 +02:00
extent scan: introduce SCAN_MODE_EXTENT
The EXTENT scan mode reads the extent tree, splits it into tiers by extent size, converts each tiers's extents into subvol/inode/offset refs, then runs the legacy bees dedupe engine on the refs. The extent scan mode can cheaply compute completion percentage and ETA, so do that every time a new transid is observed. Signed-off-by: Zygo Blaxell <bees@furryterror.org>
This commit is contained in:
11
src/bees.h
11
src/bees.h
@ -561,11 +561,8 @@ class BeesRoots : public enable_shared_from_this<BeesRoots> {
|
||||
bool m_stop_requested = false;
|
||||
|
||||
void insert_new_crawl();
|
||||
void insert_root(const BeesCrawlState &bcs);
|
||||
Fd open_root_nocache(uint64_t root);
|
||||
Fd open_root_ino_nocache(uint64_t root, uint64_t ino);
|
||||
uint64_t transid_min();
|
||||
uint64_t transid_max();
|
||||
uint64_t transid_max_nocache();
|
||||
void state_load();
|
||||
ostream &state_to_stream(ostream &os);
|
||||
@ -582,6 +579,9 @@ class BeesRoots : public enable_shared_from_this<BeesRoots> {
|
||||
bool crawl_batch(shared_ptr<BeesCrawl> crawl);
|
||||
void clear_caches();
|
||||
|
||||
friend class BeesScanModeExtent;
|
||||
shared_ptr<BeesCrawl> insert_root(const BeesCrawlState &bcs);
|
||||
|
||||
friend class BeesCrawl;
|
||||
friend class BeesFdCache;
|
||||
friend class BeesScanMode;
|
||||
@ -600,17 +600,20 @@ public:
|
||||
Fd open_root_ino(const BeesFileId &bfi) { return open_root_ino(bfi.root(), bfi.ino()); }
|
||||
bool is_root_ro(uint64_t root);
|
||||
|
||||
// TODO: do extent-tree scans instead
|
||||
enum ScanMode {
|
||||
SCAN_MODE_LOCKSTEP,
|
||||
SCAN_MODE_INDEPENDENT,
|
||||
SCAN_MODE_SEQUENTIAL,
|
||||
SCAN_MODE_RECENT,
|
||||
SCAN_MODE_EXTENT,
|
||||
SCAN_MODE_COUNT, // must be last
|
||||
};
|
||||
|
||||
void set_scan_mode(ScanMode new_mode);
|
||||
void set_workaround_btrfs_send(bool do_avoid);
|
||||
|
||||
uint64_t transid_min();
|
||||
uint64_t transid_max();
|
||||
};
|
||||
|
||||
struct BeesHash {
|
||||
|
Reference in New Issue
Block a user