Commit 420f5da1 authored by Tommaso Tocci's avatar Tommaso Tocci
Browse files

Merge branch 'metadata_refactoring' into 'master'

Metadata refactoring

See merge request zdvresearch_bsc/adafs!93
parents d3442568 4d092217
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -95,6 +95,13 @@ set_target_properties(spdlog
    INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/include/extern"
)

add_library(fmt INTERFACE)
# we cannot use target_include_directories with CMake < 3.11
set_target_properties(fmt
    PROPERTIES
    INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/include/extern/spdlog"
)

set(INCLUDE_DIR "${CMAKE_SOURCE_DIR}/include")

# define include directories that are relevant for all targets
+1 −3
Original line number Diff line number Diff line
@@ -3,15 +3,13 @@
#define IFS_METADENTRY_HPP

#include <daemon/adafs_daemon.hpp>
#include <daemon/classes/metadata.hpp>
#include <global/metadata.hpp>
#include <preload/preload_util.hpp>

int create_node(const std::string& path, const uid_t uid, const gid_t gid, mode_t mode);

void create_metadentry(const std::string& path, mode_t mode);

int db_val_to_stat(const std::string& path, std::string db_val, struct stat& attr);

std::string get_metadentry_str(const std::string& path);

Metadata get_metadentry(const std::string& path);
+1 −1
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@


#include "rocksdb/merge_operator.h"
#include <daemon/classes/metadata.hpp>
#include "global/metadata.hpp"

namespace rdb = rocksdb;

+59 −0
Original line number Diff line number Diff line

#ifndef FS_METADATA_H
#define FS_METADATA_H
#pragma once

#include <daemon/adafs_daemon.hpp>

class Metadata {
#include "global/configure.hpp"
#include <sys/types.h>
#include <string>


class Metadata {
private:
    time_t atime_;         // access time. gets updated on file access unless mounted with noatime
    time_t mtime_;         // modify time. gets updated when file content is modified.
@@ -13,71 +16,43 @@ private:
    uid_t uid_;
    gid_t gid_;
    mode_t mode_;
    uint64_t inode_no_;
    unsigned long inode_no_;
    nlink_t link_count_;   // number of names for this inode (hardlinks)
    size_t size_;          // size_ in bytes, might be computed instead of stored
    blkcnt_t blocks_;      // allocated file system blocks_

    std::string path_;

public:
    Metadata();
    explicit Metadata(mode_t mode);
    // Construct from a binary representation of the object
    explicit Metadata(const std::string& binary_str);

    Metadata(const std::string& path, mode_t mode);

    Metadata(const std::string& path, std::string db_val);
    std::string serialize() const;

    void init_ACM_time();

    void update_ACM_time(bool a, bool c, bool m);

    std::string serialize() const;

    //Getter and Setter
    time_t atime() const;

    void atime(time_t atime_);

    time_t mtime() const;

    void mtime(time_t mtime_);

    time_t ctime() const;

    void ctime(time_t ctime_);

    uid_t uid() const;

    void uid(uid_t uid_);

    gid_t gid() const;

    void gid(gid_t gid_);

    mode_t mode() const;

    void mode(mode_t mode_);

    uint64_t inode_no() const;

    void inode_no(uint64_t inode_no_);

    unsigned long inode_no() const;
    void inode_no(unsigned long inode_no_);
    nlink_t link_count() const;

    void link_count(nlink_t link_count_);

    size_t size() const;

    void size(size_t size_);

    blkcnt_t blocks() const;

    void blocks(blkcnt_t blocks_);

    const std::string& path() const;

    void path(const std::string& path);

};


+2 −16
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
#define IFS_PRELOAD_UTIL_HPP

#include <preload/preload.hpp>
#include <global/metadata.hpp>
// third party libs
#include <string>
#include <iostream>
@@ -11,21 +12,6 @@ extern "C" {
#include <margo.h>
}

// Used to bundle metadata into one place
struct Metadentry {
    time_t atime;
    time_t mtime;
    time_t ctime;
    uid_t uid;
    gid_t gid;
    mode_t mode;
    uint64_t inode_no;
    nlink_t link_count;
    off_t size;
    blkcnt_t blocks;

    std::string path;
};
struct MetadentryUpdateFlags {
    bool atime = false;
    bool mtime = false;
@@ -62,7 +48,7 @@ extern hg_id_t rpc_get_dirents_id;

bool is_fs_path(const char* path);

int db_val_to_stat(const std::string& path, std::string db_val, struct stat& attr);
int metadata_to_stat(const std::string& path, const Metadata& md, struct stat& attr);

int get_daemon_pid();

Loading