Unverified Commit 6cbdc228 authored by Tommaso Tocci's avatar Tommaso Tocci
Browse files

Move rpc_send functions to their own namespace

parent e1cf2d7d
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -2,11 +2,17 @@
#ifndef IFS_PRELOAD_C_DATA_WS_HPP
#define IFS_PRELOAD_C_DATA_WS_HPP

ssize_t rpc_send_write(const std::string& path, const void* buf, const bool append_flag, const off64_t in_offset,

namespace rpc_send {

ssize_t write(const std::string& path, const void* buf, const bool append_flag, const off64_t in_offset,
                       const size_t write_size, const int64_t updated_metadentry_size);

ssize_t rpc_send_read(const std::string& path, void* buf, const off64_t offset, const size_t read_size);
ssize_t read(const std::string& path, void* buf, const off64_t offset, const size_t read_size);

int trunc_data(const std::string& path, size_t current_size, size_t new_size);

}

int rpc_send_trunc_data(const std::string& path, size_t current_size, size_t new_size);

#endif //IFS_PRELOAD_C_DATA_WS_HPP
+6 −1
Original line number Diff line number Diff line
@@ -2,7 +2,12 @@
#ifndef IFS_MARGO_RPC_MANAGMENT_HPP
#define IFS_MARGO_RPC_MANAGMENT_HPP

namespace rpc_send {

bool rpc_send_get_fs_config();

bool get_fs_config();


} // end namespace rpc_send

#endif //IFS_MARGO_RPC_NANAGMENT_HPP
+14 −9
Original line number Diff line number Diff line
@@ -10,24 +10,29 @@ struct MetadentryUpdateFlags;
class OpenDir;
class Metadata;

namespace rpc_send {

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

int rpc_send_access(const std::string& path, int mask);
int mk_node(const std::string& path, mode_t mode);

int rpc_send_stat(const std::string& path, std::string& attr);
int access(const std::string& path, int mask);

int rpc_send_rm_node(const std::string& path, const bool remove_metadentry_only);
int stat(const std::string& path, std::string& attr);

int rpc_send_decr_size(const std::string& path, size_t length);
int rm_node(const std::string& path, const bool remove_metadentry_only);

int rpc_send_update_metadentry(const std::string& path, const Metadata& md, const MetadentryUpdateFlags& md_flags);
int decr_size(const std::string& path, size_t length);

int rpc_send_update_metadentry_size(const std::string& path, size_t size, off64_t offset, bool append_flag,
int update_metadentry(const std::string& path, const Metadata& md, const MetadentryUpdateFlags& md_flags);

int update_metadentry_size(const std::string& path, size_t size, off64_t offset, bool append_flag,
                                    off64_t& ret_size);

int rpc_send_get_metadentry_size(const std::string& path, off64_t& ret_size);
int get_metadentry_size(const std::string& path, off64_t& ret_size);

void get_dirents(OpenDir& open_dir);


void rpc_send_get_dirents(OpenDir& open_dir);
} // end namespace rpc_send

#endif //IFS_PRELOAD_C_METADENTRY_HPP
+17 −17
Original line number Diff line number Diff line
@@ -121,7 +121,7 @@ int adafs_mk_node(const std::string& path, const mode_t mode) {
        errno = ENOTDIR;
        return -1;
    }
    return rpc_send_mk_node(path, mode);
    return rpc_send::mk_node(path, mode);
}

/**
@@ -136,7 +136,7 @@ int adafs_rm_node(const std::string& path) {
        return -1;
    }
    bool has_data = S_ISREG(md->mode()) && (md->size() != 0);
    return rpc_send_rm_node(path, !has_data);
    return rpc_send::rm_node(path, !has_data);
}

int adafs_access(const std::string& path, const int mask) {
@@ -146,9 +146,9 @@ int adafs_access(const std::string& path, const int mask) {
    return 0;
#endif
#if defined(CHECK_ACCESS)
    return rpc_send_access(path, mask);
    return rpc_send::access(path, mask);
#else
    return rpc_send_access(path, F_OK); // Only check for file exists
    return rpc_send::access(path, F_OK); // Only check for file exists
#endif
}

@@ -164,7 +164,7 @@ int adafs_stat(const string& path, struct stat* buf) {

std::shared_ptr<Metadata> adafs_metadata(const string& path) {
    std::string attr;
    auto err = rpc_send_stat(path, attr);
    auto err = rpc_send::stat(path, attr);
    if (err) {
        return nullptr;
    }
@@ -174,7 +174,7 @@ std::shared_ptr<Metadata> adafs_metadata(const string& path) {
int adafs_statfs(const string& path, struct statfs* adafs_buf, struct statfs& realfs_buf) {
    init_ld_env_if_needed();
    // Check that file path exists
    auto ret = rpc_send_access(path, F_OK);
    auto ret = rpc_send::access(path, F_OK);
    // Valid fs error
    if (ret > 0) {
        errno = ret;
@@ -222,7 +222,7 @@ off64_t adafs_lseek(shared_ptr<OpenFile> adafs_fd, off64_t offset, int whence) {
            break;
        case SEEK_END: {
            off64_t file_size;
            auto err = rpc_send_get_metadentry_size(adafs_fd->path(), file_size);
            auto err = rpc_send::get_metadentry_size(adafs_fd->path(), file_size);
            if (err < 0) {
                errno = err; // Negative numbers are explicitly for error codes
                return -1;
@@ -253,12 +253,12 @@ int adafs_truncate(const std::string& path, off_t old_size, off_t new_size) {
        return 0;
    }

    if (rpc_send_decr_size(path, new_size)) {
    if (rpc_send::decr_size(path, new_size)) {
        CTX->log()->debug("{}() failed to decrease size", __func__);
        return -1;
    }

    if(rpc_send_trunc_data(path, old_size, new_size)){
    if(rpc_send::trunc_data(path, old_size, new_size)){
        CTX->log()->debug("{}() failed to truncate data", __func__);
        return -1;
    }
@@ -318,14 +318,14 @@ ssize_t adafs_pwrite(std::shared_ptr<OpenFile> file, const char * buf, size_t co
    ssize_t ret = 0;
    long updated_size = 0;

    ret = rpc_send_update_metadentry_size(*path, count, offset, append_flag, updated_size);
    ret = rpc_send::update_metadentry_size(*path, count, offset, append_flag, updated_size);
    if (ret != 0) {
        CTX->log()->error("{}() update_metadentry_size failed with ret {}", __func__, ret);
        return ret; // ERR
    }
    ret = rpc_send_write(*path, buf, append_flag, offset, count, updated_size);
    ret = rpc_send::write(*path, buf, append_flag, offset, count, updated_size);
    if (ret < 0) {
        CTX->log()->warn("{}() rpc_send_write failed with ret {}", __func__, ret);
        CTX->log()->warn("{}() rpc_send::write failed with ret {}", __func__, ret);
    }
    return ret; // return written size or -1 as error
}
@@ -414,9 +414,9 @@ ssize_t adafs_pread(std::shared_ptr<OpenFile> file, char * buf, size_t count, of
#if defined(ZERO_BUFFER_BEFORE_READ)
    memset(buf, 0, sizeof(char)*count);
#endif
    auto ret = rpc_send_read(file->path(), buf, offset, count);
    auto ret = rpc_send::read(file->path(), buf, offset, count);
    if (ret < 0) {
        CTX->log()->warn("{}() rpc_send_read failed with ret {}", __func__, ret);
        CTX->log()->warn("{}() rpc_send::read failed with ret {}", __func__, ret);
    }
    // XXX check that we don't try to read past end of the file
    return ret; // return read size or -1 as error
@@ -454,7 +454,7 @@ int adafs_opendir(const std::string& path) {
    }

    auto open_dir = std::make_shared<OpenDir>(path);
    rpc_send_get_dirents(*open_dir);
    rpc_send::get_dirents(*open_dir);
    return CTX->file_map()->add(open_dir);
}

@@ -474,12 +474,12 @@ int adafs_rmdir(const std::string& path) {
    }

    auto open_dir = std::make_shared<OpenDir>(path);
    rpc_send_get_dirents(*open_dir);
    rpc_send::get_dirents(*open_dir);
    if(open_dir->size() != 0){
        errno = ENOTEMPTY;
        return -1;
    }
    return rpc_send_rm_node(path, true);
    return rpc_send::rm_node(path, true);
}

struct dirent * adafs_readdir(int fd){
+1 −1
Original line number Diff line number Diff line
@@ -112,7 +112,7 @@ void init_ld_environment_() {
        CTX->log()->error("{}() Unable to initialize Margo RPC client.", __func__);
        exit(EXIT_FAILURE);
    }
    if (!rpc_send_get_fs_config()) {
    if (!rpc_send::get_fs_config()) {
        CTX->log()->error("{}() Unable to fetch file system configurations from daemon process through RPC.", __func__);
        exit(EXIT_FAILURE);
    }
Loading