61de3f9287
The Rust implementation is multithreaded, performs better in general and does custom compression of btree nodes to achieve much better compression ratios. unpack also checksums expanded metadata to validate it. Format version has jumped to 3, no backwards compatibility, but I think that's ok since we never made a release that contained the C++ version of these tools. Benchmarks ========== On an 8 core, 16 hyperthread machine. metadata 1G, full: Pack size pack time unpack time ------------------------------------------------------ C++ 193M 50.3s 6.9s (no verify) Rust 70M 1.4s 1.8s (verify) metadata 16G, sparse: Pack size pack time unpack time ------------------------------------------------------ C++ 21M 68s 1s (no verify) Rust 4M 8.6s 0.5s (verify)
134 lines
3.1 KiB
C++
134 lines
3.1 KiB
C++
#ifndef THIN_PROVISIONING_COMMANDS_H
|
|
#define THIN_PROVISIONING_COMMANDS_H
|
|
|
|
#include "base/application.h"
|
|
#include "boost/optional.hpp"
|
|
|
|
//----------------------------------------------------------------
|
|
|
|
namespace thin_provisioning {
|
|
class thin_check_cmd : public base::command {
|
|
public:
|
|
thin_check_cmd();
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
|
|
class thin_delta_cmd : public base::command {
|
|
public:
|
|
thin_delta_cmd();
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
|
|
class thin_dump_cmd : public base::command {
|
|
public:
|
|
thin_dump_cmd();
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
|
|
class thin_ls_cmd : public base::command {
|
|
public:
|
|
thin_ls_cmd();
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
|
|
class thin_metadata_size_cmd : public base::command {
|
|
public:
|
|
thin_metadata_size_cmd();
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
|
|
class thin_restore_cmd : public base::command {
|
|
public:
|
|
thin_restore_cmd();
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
|
|
class thin_repair_cmd : public base::command {
|
|
public:
|
|
thin_repair_cmd();
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
|
|
class thin_rmap_cmd : public base::command {
|
|
public:
|
|
thin_rmap_cmd();
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
|
|
class thin_trim_cmd : public base::command {
|
|
public:
|
|
thin_trim_cmd();
|
|
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
|
|
#ifdef DEV_TOOLS
|
|
class thin_ll_dump_cmd : public base::command {
|
|
public:
|
|
thin_ll_dump_cmd();
|
|
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
|
|
class thin_ll_restore_cmd : public base::command {
|
|
public:
|
|
thin_ll_restore_cmd();
|
|
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
|
|
class thin_scan_cmd : public base::command {
|
|
public:
|
|
thin_scan_cmd();
|
|
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
|
|
class thin_show_duplicates_cmd : public base::command {
|
|
public:
|
|
thin_show_duplicates_cmd();
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
|
|
class thin_generate_metadata_cmd : public base::command {
|
|
public:
|
|
thin_generate_metadata_cmd();
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
|
|
class thin_show_metadata_cmd : public base::command {
|
|
public:
|
|
thin_show_metadata_cmd();
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
|
|
class thin_journal_cmd : public base::command {
|
|
public:
|
|
thin_journal_cmd();
|
|
virtual void usage(std::ostream &out) const;
|
|
virtual int run(int argc, char **argv);
|
|
};
|
|
#endif
|
|
|
|
void register_thin_commands(base::application &app);
|
|
}
|
|
|
|
//----------------------------------------------------------------
|
|
|
|
#endif
|