Commit e7f8c0c8 authored by Ramon Nou's avatar Ramon Nou
Browse files

Isolate replica behavior from primary GekkoFS paths

parent 7ffd0ca8
Loading
Loading
Loading
Loading
Loading
+25 −0
Changes for include/client/primary_data_ops.hpp: 25 added lines, 0 removed lines.
Original line number Diff line number Diff line
/*
  Copyright 2018-2025, Barcelona Supercomputing Center (BSC), Spain
  Copyright 2015-2025, Johannes Gutenberg Universitaet Mainz, Germany

  SPDX-License-Identifier: GPL-3.0-or-later
*/

#ifndef GEKKOFS_CLIENT_PRIMARY_DATA_OPS_HPP
#define GEKKOFS_CLIENT_PRIMARY_DATA_OPS_HPP

#include <client/open_file_map.hpp>

namespace gkfs::syscall {

ssize_t
primary_gkfs_do_write(gkfs::filemap::OpenFile& file, const char* buf,
                      size_t count, off64_t offset, bool update_pos);

ssize_t
primary_gkfs_do_read(const gkfs::filemap::OpenFile& file, char* buf,
                     size_t count, off64_t offset);

} // namespace gkfs::syscall

#endif
 No newline at end of file
+24 −0
Changes for include/client/primary_metadata_ops.hpp: 24 added lines, 0 removed lines.
Original line number Diff line number Diff line
/*
  Copyright 2018-2025, Barcelona Supercomputing Center (BSC), Spain
  Copyright 2015-2025, Johannes Gutenberg Universitaet Mainz, Germany

  SPDX-License-Identifier: GPL-3.0-or-later
*/

#ifndef GEKKOFS_CLIENT_PRIMARY_METADATA_OPS_HPP
#define GEKKOFS_CLIENT_PRIMARY_METADATA_OPS_HPP

#include <string>
#include <sys/types.h>

namespace gkfs::syscall {

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

int
primary_gkfs_truncate(const std::string& path, off_t old_size, off_t new_size);

} // namespace gkfs::syscall

#endif
 No newline at end of file
+16 −0
Changes for include/client/rpc/forward_data.hpp: 16 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -72,6 +72,22 @@ forward_truncate(const std::string& path, size_t current_size, size_t new_size,
std::pair<int, ChunkStat>
forward_get_chunk_stat();

std::pair<int, ssize_t>
primary_forward_write(const std::string& path, const void* buf, off64_t offset,
                      size_t write_size, const int8_t num_copy = 0);

std::pair<int, ssize_t>
primary_forward_read(const std::string& path, void* buf, off64_t offset,
                     size_t read_size, const int8_t num_copies,
                     std::set<gkfs::rpc::host_t>& failed);

int
primary_forward_truncate(const std::string& path, size_t current_size,
                         size_t new_size, const int8_t num_copies);

std::pair<int, ChunkStat>
primary_forward_get_chunk_stat();

} // namespace gkfs::rpc

#endif // GEKKOFS_CLIENT_FORWARD_DATA_HPP
+119 −0
Changes for include/client/rpc/metadata_forwarders.hpp: 119 added lines, 0 removed lines.
Original line number Diff line number Diff line
/*
  Copyright 2018-2025, Barcelona Supercomputing Center (BSC), Spain
  Copyright 2015-2025, Johannes Gutenberg Universitaet Mainz, Germany

  SPDX-License-Identifier: GPL-3.0-or-later
*/

#ifndef GEKKOFS_CLIENT_METADATA_FORWARDERS_HPP
#define GEKKOFS_CLIENT_METADATA_FORWARDERS_HPP

#include <client/rpc/forward_metadata.hpp>

namespace gkfs::rpc {

int
primary_forward_create(const std::string&, mode_t, int);
int
primary_forward_batch_create(uint64_t, const std::vector<std::string>&,
                             const std::vector<uint32_t>&);
int
primary_forward_create_write_inline(const std::string&, mode_t,
                                    const std::string&, uint64_t, int);
int
primary_forward_stat(const std::string&, std::string&, std::string&, int, bool);
int
primary_forward_rename(const std::string&, const std::string&,
                       const gkfs::metadata::Metadata&);
int
primary_forward_remove(const std::string&, bool, int8_t, int64_t);
int
primary_forward_remove(const std::string&, bool, int8_t, int64_t&, uint32_t&,
                       std::string&, bool);
int
primary_forward_decr_size(const std::string&, size_t, int);
int
primary_forward_update_metadentry(const std::string&,
                                  const gkfs::metadata::Metadata&,
                                  const gkfs::metadata::MetadentryUpdateFlags&,
                                  int);
int
primary_forward_mk_symlink(const std::string&, const std::string&);
std::pair<int, std::shared_ptr<gkfs::filemap::OpenDir>>
primary_forward_get_dirents(const std::string&);
std::pair<int, off64_t>
primary_forward_write_inline(const std::string&, const void*, off64_t, size_t,
                             bool);
std::pair<int, ssize_t>
primary_forward_read_inline(const std::string&, void*, off64_t, size_t);
std::pair<int, off64_t>
primary_forward_get_metadentry_size(const std::string&, int);
std::pair<int, off64_t>
primary_forward_update_metadentry_size(const std::string&, size_t, off64_t,
                                       bool, bool, int);
std::pair<int, std::unique_ptr<std::vector<std::tuple<
                       const std::string, unsigned char, size_t, time_t>>>>
primary_forward_get_dirents_single(const std::string&, int, const std::string&,
                                   bool);
std::tuple<int,
           std::vector<std::tuple<const std::string, unsigned char, size_t,
                                  time_t>>,
           uint64_t, uint64_t, std::string>
primary_forward_get_dirents_filtered(const std::string&, int,
                                     const std::string&, const std::string&,
                                     int64_t, int64_t, bool);

int
replicated_forward_create(const std::string&, mode_t, int);
int
replicated_forward_batch_create(uint64_t, const std::vector<std::string>&,
                                const std::vector<uint32_t>&);
int
replicated_forward_create_write_inline(const std::string&, mode_t,
                                       const std::string&, uint64_t, int);
int
replicated_forward_stat(const std::string&, std::string&, std::string&, int,
                        bool);
int
replicated_forward_rename(const std::string&, const std::string&,
                          const gkfs::metadata::Metadata&);
int
replicated_forward_remove(const std::string&, bool, int8_t, int64_t);
int
replicated_forward_remove(const std::string&, bool, int8_t, int64_t&, uint32_t&,
                          std::string&, bool);
int
replicated_forward_decr_size(const std::string&, size_t, int);
int
replicated_forward_update_metadentry(
        const std::string&, const gkfs::metadata::Metadata&,
        const gkfs::metadata::MetadentryUpdateFlags&, int);
int
replicated_forward_mk_symlink(const std::string&, const std::string&);
std::pair<int, std::shared_ptr<gkfs::filemap::OpenDir>>
replicated_forward_get_dirents(const std::string&);
std::pair<int, off64_t>
replicated_forward_write_inline(const std::string&, const void*, off64_t,
                                size_t, bool, int);
std::pair<int, ssize_t>
replicated_forward_read_inline(const std::string&, void*, off64_t, size_t, int);
std::pair<int, off64_t>
replicated_forward_get_metadentry_size(const std::string&, int);
std::pair<int, off64_t>
replicated_forward_update_metadentry_size(const std::string&, size_t, off64_t,
                                          bool, bool, int);
std::pair<int, std::unique_ptr<std::vector<std::tuple<
                       const std::string, unsigned char, size_t, time_t>>>>
replicated_forward_get_dirents_single(const std::string&, int,
                                      const std::string&, bool);
std::tuple<int,
           std::vector<std::tuple<const std::string, unsigned char, size_t,
                                  time_t>>,
           uint64_t, uint64_t, std::string>
replicated_forward_get_dirents_filtered(const std::string&, int,
                                        const std::string&, const std::string&,
                                        int64_t, int64_t, bool);

} // namespace gkfs::rpc

#endif
 No newline at end of file
+6 −0
Changes for include/daemon/malleability/malleable_manager.hpp: 6 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -78,6 +78,12 @@ private:
    int
    redistribute_data_v2();

    int
    redistribute_primary_data_v2();

    int
    redistribute_replicated_data_v2();

    static void
    expand_abt_v2(void* _arg);

Loading