Commit 6fba14dd authored by Marc Vef's avatar Marc Vef
Browse files

rocksdb working prototype

parent 54b41a5c
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -31,11 +31,11 @@ set(SOURCE_FILES src/main.cpp src/main.hpp src/fuse_ops.hpp src/configure.hpp
        src/classes/metadata.h src/classes/metadata.cpp src/classes/fs_data.h src/classes/fs_data.cpp
        src/classes/dentry.h src/classes/dentry.cpp

        src/adafs_ops/mdata_ops.hpp src/adafs_ops/dentry_ops.hpp src/adafs_ops/access.hpp
        src/adafs_ops/mdata_ops.hpp src/adafs_ops/dentry_ops.hpp src/adafs_ops/access.hpp src/adafs_ops/db_ops.hpp

        src/util.cpp
        src/fuse_ops/file.cpp src/fuse_ops/directory.cpp src/fuse_ops/sync.cpp src/fuse_ops/access.cpp
        src/adafs_ops/mdata_ops.cpp src/adafs_ops/dentry_ops.cpp src/adafs_ops/access.cpp
        src/adafs_ops/mdata_ops.cpp src/adafs_ops/dentry_ops.cpp src/adafs_ops/access.cpp src/adafs_ops/db_ops.cpp

        )
add_executable(adafs ${SOURCE_FILES} src/main.cpp)
+20 −0
Original line number Diff line number Diff line
//
// Created by evie on 6/6/17.
//

#include "db_ops.hpp"

using namespace rocksdb;
using namespace std;

bool db_put(const string key, const time_t val) {
    auto db = ADAFS_DATA->rdb().get();
    return db->Put(WriteOptions(), key, fmt::FormatInt(val).c_str()).ok();
}

time_t db_get(const string key) {
    auto db = ADAFS_DATA->rdb().get();
    string val_s;
    db->Get(ReadOptions(), key, &val_s);
    return static_cast<time_t>(stol(val_s));
}
 No newline at end of file
+15 −0
Original line number Diff line number Diff line
//
// Created by evie on 6/6/17.
//

#ifndef LFS_DB_OPS_HPP
#define LFS_DB_OPS_HPP

#include "../main.hpp"


bool db_put(const std::string key, const time_t val);

time_t db_get(const std::string key);

#endif //LFS_DB_OPS_HPP
+2 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@

// TODO error handling. Each read_metadata_field should check for boolean, i.e., if I/O failed.
bool write_all_metadata(const Metadata& md, const fuse_ino_t inode) {
    db_put(fmt::FormatInt(inode).str(), md.atime());
    write_metadata_field(md.atime(), std::get<to_underlying(Md_fields::atime)>(md_field_map), inode);
    write_metadata_field(md.mtime(), std::get<to_underlying(Md_fields::mtime)>(md_field_map), inode);
    write_metadata_field(md.ctime(), std::get<to_underlying(Md_fields::ctime)>(md_field_map), inode);
@@ -25,6 +26,7 @@ bool write_all_metadata(const Metadata& md, const fuse_ino_t inode) {

// TODO error handling. Each read_metadata_field should check for nullptr, i.e., if I/O failed.
bool read_all_metadata(Metadata& md, const fuse_ino_t inode) {
    auto re = db_get(fmt::FormatInt(inode).str());
    md.atime(*read_metadata_field<time_t>(std::get<to_underlying(Md_fields::atime)>(md_field_map), inode));
    md.mtime(*read_metadata_field<time_t>(std::get<to_underlying(Md_fields::mtime)>(md_field_map), inode));
    md.ctime(*read_metadata_field<time_t>(std::get<to_underlying(Md_fields::ctime)>(md_field_map), inode));
+1 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@

#include "../main.hpp"
#include "../classes/metadata.h"
#include "db_ops.hpp"

#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
Loading