Commit 40d499ee authored by Marc Vef's avatar Marc Vef
Browse files

Making keep_rootdir non-global, clean also metadir if given, -c now cleans rootdir after finish

parent f5a24bdd
Loading
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -205,12 +205,6 @@ public:
    void
    blocks_state(bool blocks_state);

    bool
    keep_rootdir() const;

    void
    keep_rootdir(bool keep_rootdir_);

    unsigned long long
    kreon_size_md() const;

+0 −10
Original line number Diff line number Diff line
@@ -210,16 +210,6 @@ FsData::blocks_state(bool blocks_state) {
    FsData::blocks_state_ = blocks_state;
}

bool
FsData::keep_rootdir() const {
    return keep_rootdir_;
}

void
FsData::keep_rootdir(bool keep_rootdir) {
    FsData::keep_rootdir_ = keep_rootdir;
}

unsigned long long
FsData::kreon_size_md() const {
    return size_md_;
+13 −6
Original line number Diff line number Diff line
@@ -69,6 +69,7 @@ namespace fs = std::filesystem;

static condition_variable shutdown_please; // handler for shutdown signaling
static mutex mtx; // mutex to wait on shutdown conditional variable
static bool keep_rootdir = true;

struct cli_options {
    string mountdir;
@@ -413,7 +414,7 @@ destroy_enviroment() {


    // Delete rootdir/metadir if requested
    if(!GKFS_DATA->keep_rootdir()) {
    if(!keep_rootdir) {
        GKFS_DATA->spdlogger()->info("{}() Removing rootdir and metadir ...",
                                     __func__);
        fs::remove_all(GKFS_DATA->metadir(), ecode);
@@ -566,11 +567,11 @@ parse_input(const cli_options& opts, const CLI::App& desc) {
        GKFS_DATA->spdlogger()->debug("{}() Cleaning rootdir '{}' ...",
                                      __func__, rootdir_path.native());
        fs::remove_all(rootdir_path.native());
        GKFS_DATA->spdlogger()->info("{}() Rootdir cleaned.", __func__);
        GKFS_DATA->spdlogger()->info("{}() rootdir cleaned.", __func__);
    }

    if(desc.count("--clean-rootdir-finish")) {
        GKFS_DATA->keep_rootdir(false);
        keep_rootdir = false;
    }

    GKFS_DATA->spdlogger()->debug("{}() Root directory: '{}'", __func__,
@@ -586,7 +587,13 @@ parse_input(const cli_options& opts, const CLI::App& desc) {
#else
        auto metadir_path = fs::path(metadir);
#endif

        if(desc.count("--clean-rootdir")) {
            // may throw exception (caught in main)
            GKFS_DATA->spdlogger()->debug("{}() Cleaning metadir '{}' ...",
                                          __func__, metadir_path.native());
            fs::remove_all(metadir_path.native());
            GKFS_DATA->spdlogger()->info("{}() metadir cleaned.", __func__);
        }
        fs::create_directories(metadir_path);
        GKFS_DATA->metadir(fs::canonical(metadir_path).native());

@@ -691,10 +698,10 @@ main(int argc, const char* argv[]) {
                "Enables intra-node communication (IPCs) via the `na+sm` (shared memory) protocol, "
                "instead of using the RPC protocol. (Default off)");
    desc.add_flag(
                "--clean-rootdir,-c",
                "--clean-rootdir",
                "Cleans Rootdir >before< launching the deamon");
    desc.add_flag(
                "--clean-rootdir-finish,-f",
                "--clean-rootdir-finish,-c",
                "Cleans Rootdir >after< the deamon finishes");
    desc.add_option(
                "--dbbackend,-d", opts.dbbackend,