Commit 55c5a72f authored by Marc Vef's avatar Marc Vef
Browse files

Init dentry directory for root

parent c4fedbc2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -16,6 +16,6 @@ find_package(FUSE3 REQUIRED)
find_package(Boost 1.56.0 COMPONENTS system filesystem serialization)

include_directories(${FUSE3_INCLUDE_DIR} include/)
set(SOURCE_FILES src/main.cpp src/main.h src/fuse_ops.h src/util.cpp src/metadata.h src/metadata.cpp src/metadata_ops.h src/metadata_ops.cpp)
set(SOURCE_FILES src/main.cpp src/main.h src/fuse_ops.h src/util.cpp src/metadata.h src/metadata.cpp src/metadata_ops.h src/metadata_ops.cpp src/dentry_ops.cpp src/dentry_ops.h)
add_executable(adafs ${SOURCE_FILES} src/main.cpp)
target_link_libraries(adafs ${FUSE3_LIBRARIES} -lpthread -lboost_system -lboost_filesystem -lboost_serialization)
 No newline at end of file

fs/src/dentry_ops.cpp

0 → 100644
+20 −0
Original line number Diff line number Diff line
//
// Created by evie on 3/17/17.
//

#include "dentry_ops.h"

using namespace std;

/**
 * Called when a directory is created to init the corresponding dentry dir.
 * @param hash
 * @return
 */
bool init_dentry(const unsigned long& hash) {
    auto path = bfs::path(ADAFS_DATA->dentry_path);
    path.append(to_string(hash));
    bfs::create_directories(path);

    return bfs::exists(path);
}

fs/src/dentry_ops.h

0 → 100644
+12 −0
Original line number Diff line number Diff line
//
// Created by evie on 3/17/17.
//

#ifndef FS_DENTRY_OPS_H
#define FS_DENTRY_OPS_H

#include "main.h"

bool init_dentry(const unsigned long& hash);

#endif //FS_DENTRY_OPS_H
+5 −1
Original line number Diff line number Diff line
#include "main.h"
#include "metadata.h"
#include "metadata_ops.h"
#include "dentry_ops.h"
#include "fuse_ops.h"

static struct fuse_operations adafs_ops;
@@ -96,7 +97,10 @@ void *adafs_init(struct fuse_conn_info *conn, struct fuse_config *cfg) {
        md->uid(fuse_get_context()->uid);
        md->gid(fuse_get_context()->gid);
        md->inode_no(ADAFS_ROOT_INODE);
        write_all_metadata(*md, ADAFS_DATA->hashf("/"s), ADAFS_DATA->inode_path);
        ADAFS_DATA->logger->info("Writing / metadata to disk..."s);
        write_all_metadata(*md, ADAFS_DATA->hashf("/"s));
        ADAFS_DATA->logger->info("Initializing dentry for /"s);
        init_dentry(ADAFS_DATA->hashf("/"s));
        ADAFS_DATA->logger->info("Creating Metadata object"s);
    }

+1 −1
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ struct adafs_data {
    std::string rootdir;
    // Below paths are needed for future version when we'll get rid of path hashing.
    std::string inode_path; // used
    std::string dentry_path; // unused
    std::string dentry_path; // used
    std::string chunk_path; // unused

    // Caching
Loading