Loading README.md +4 −4 Changes for README.md: 4 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -389,7 +389,7 @@ This is disabled by default. ## Replication The user can enable the data replication feature by setting the replication environment variable: `LIBGKFS_NUM_REPL=<num repl>`. `GKFS_NUM_REPL=<num repl>`. The number of replicas should go from `0` to the `number of servers - 1`. The replication environment variable can be set up for each client independently. Loading Loading @@ -1045,10 +1045,10 @@ Client-metrics require the CMake argument `-DGKFS_ENABLE_CLIENT_METRICS=ON` (see connecting to the ZeroMQ sink directly from every rank. Requires the same variable set in the daemon's environment. - `LIBGKFS_PROXY_PID_FILE` - Path to the proxy pid file (when using the GekkoFS proxy). - `LIBGKFS_NUM_REPL` - Number of replicas for data. - `GKFS_NUM_REPL` - Number of replicas for data, shared by clients and daemons. - Simple-hash replication supports replica-aware mutation when `GKFS_DAEMON_NUM_REPL` matches `LIBGKFS_NUM_REPL` on all clients/daemons and the new host count is greater than the replica count. `GKFS_NUM_REPL` is set consistently for all clients and daemons, and the new host count is greater than the replica count. - Random Slicing with replication remains rejected because it does not yet define independent deterministic replica placement. - Migration plans carry replica copy indices and placement generations; stale Loading docs/sphinx/users/running.md +4 −3 Changes for docs/sphinx/users/running.md: 4 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -364,12 +364,13 @@ This is disabled by default. #### Replication The user can enable the data replication feature by setting the replication environment variable: `LIBGKFS_NUM_REPL=<num repl>`. `GKFS_NUM_REPL=<num repl>`. The number of replicas should go from `0` to the `number of servers - 1`. The replication environment variable can be set up for each client independently. Simple-hash replication supports mutation when `GKFS_DAEMON_NUM_REPL` matches `LIBGKFS_NUM_REPL` and the new host count is greater than the replica count. Simple-hash replication supports mutation when `GKFS_NUM_REPL` is set consistently for clients and daemons and the new host count is greater than the replica count. Random Slicing with replication remains rejected because independent replica placement is not defined for that strategy. Migration plans validate copy indices and placement generations before I/O. Loading include/client/env.hpp +0 −1 Changes for include/client/env.hpp: 0 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -85,7 +85,6 @@ static constexpr auto PROTECT_FILES_CONSUMER = static constexpr auto RANGE_FD = ADD_PREFIX("RANGE_FD"); static constexpr auto DIRENTS_BUFF_SIZE = ADD_PREFIX("DIRENTS_BUFF_SIZE"); static constexpr auto NUM_REPL = ADD_PREFIX("NUM_REPL"); static constexpr auto REPAIR_STATUS_PATH = ADD_PREFIX("REPAIR_STATUS_PATH"); static constexpr auto REPAIR_JOURNAL_PATH = ADD_PREFIX("REPAIR_JOURNAL_PATH"); static constexpr auto PROXY_PID_FILE = ADD_PREFIX("PROXY_PID_FILE"); Loading include/client/rpc/replica.hpp +4 −4 Changes for include/client/rpc/replica.hpp: 4 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -158,12 +158,12 @@ mutation_error_with_replicas(const int replica_count) { inline void validate_replica_count(const int replica_count, const std::size_t host_count) { if(replica_count < 0) { throw std::invalid_argument("LIBGKFS_NUM_REPL must not be negative"); throw std::invalid_argument("GKFS_NUM_REPL must not be negative"); } if(host_count == 0 || static_cast<std::size_t>(replica_count) >= host_count) { throw std::invalid_argument( "LIBGKFS_NUM_REPL must be less than the number of hosts"); "GKFS_NUM_REPL must be less than the number of hosts"); } } Loading @@ -178,12 +178,12 @@ parse_replica_count(const std::string& value) { parsed = std::stoll(value, &consumed, 10); } catch(const std::exception&) { throw std::invalid_argument( "LIBGKFS_NUM_REPL must be a non-negative integer"); "GKFS_NUM_REPL must be a non-negative integer"); } if(consumed != value.size() || parsed < 0 || parsed > std::numeric_limits<int>::max()) { throw std::invalid_argument( "LIBGKFS_NUM_REPL must be a non-negative integer"); "GKFS_NUM_REPL must be a non-negative integer"); } return static_cast<int>(parsed); } Loading include/common/env.hpp +1 −0 Changes for include/common/env.hpp: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ static constexpr auto DISTRIBUTION_STRATEGY = static constexpr auto RANDOM_SLICING_CUTSHIFT = ADD_PREFIX("RANDOM_SLICING_CUTSHIFT"); static constexpr auto EXPAND_ON_DEMAND = ADD_PREFIX("EXPAND_ON_DEMAND"); static constexpr auto NUM_REPL = ADD_PREFIX("NUM_REPL"); static constexpr auto CREATE_CHECK_PARENTS = ADD_PREFIX("CREATE_CHECK_PARENTS"); static constexpr auto SYMLINK_SUPPORT = ADD_PREFIX("SYMLINK_SUPPORT"); static constexpr auto RENAME_SUPPORT = ADD_PREFIX("RENAME_SUPPORT"); Loading Loading
README.md +4 −4 Changes for README.md: 4 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -389,7 +389,7 @@ This is disabled by default. ## Replication The user can enable the data replication feature by setting the replication environment variable: `LIBGKFS_NUM_REPL=<num repl>`. `GKFS_NUM_REPL=<num repl>`. The number of replicas should go from `0` to the `number of servers - 1`. The replication environment variable can be set up for each client independently. Loading Loading @@ -1045,10 +1045,10 @@ Client-metrics require the CMake argument `-DGKFS_ENABLE_CLIENT_METRICS=ON` (see connecting to the ZeroMQ sink directly from every rank. Requires the same variable set in the daemon's environment. - `LIBGKFS_PROXY_PID_FILE` - Path to the proxy pid file (when using the GekkoFS proxy). - `LIBGKFS_NUM_REPL` - Number of replicas for data. - `GKFS_NUM_REPL` - Number of replicas for data, shared by clients and daemons. - Simple-hash replication supports replica-aware mutation when `GKFS_DAEMON_NUM_REPL` matches `LIBGKFS_NUM_REPL` on all clients/daemons and the new host count is greater than the replica count. `GKFS_NUM_REPL` is set consistently for all clients and daemons, and the new host count is greater than the replica count. - Random Slicing with replication remains rejected because it does not yet define independent deterministic replica placement. - Migration plans carry replica copy indices and placement generations; stale Loading
docs/sphinx/users/running.md +4 −3 Changes for docs/sphinx/users/running.md: 4 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -364,12 +364,13 @@ This is disabled by default. #### Replication The user can enable the data replication feature by setting the replication environment variable: `LIBGKFS_NUM_REPL=<num repl>`. `GKFS_NUM_REPL=<num repl>`. The number of replicas should go from `0` to the `number of servers - 1`. The replication environment variable can be set up for each client independently. Simple-hash replication supports mutation when `GKFS_DAEMON_NUM_REPL` matches `LIBGKFS_NUM_REPL` and the new host count is greater than the replica count. Simple-hash replication supports mutation when `GKFS_NUM_REPL` is set consistently for clients and daemons and the new host count is greater than the replica count. Random Slicing with replication remains rejected because independent replica placement is not defined for that strategy. Migration plans validate copy indices and placement generations before I/O. Loading
include/client/env.hpp +0 −1 Changes for include/client/env.hpp: 0 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -85,7 +85,6 @@ static constexpr auto PROTECT_FILES_CONSUMER = static constexpr auto RANGE_FD = ADD_PREFIX("RANGE_FD"); static constexpr auto DIRENTS_BUFF_SIZE = ADD_PREFIX("DIRENTS_BUFF_SIZE"); static constexpr auto NUM_REPL = ADD_PREFIX("NUM_REPL"); static constexpr auto REPAIR_STATUS_PATH = ADD_PREFIX("REPAIR_STATUS_PATH"); static constexpr auto REPAIR_JOURNAL_PATH = ADD_PREFIX("REPAIR_JOURNAL_PATH"); static constexpr auto PROXY_PID_FILE = ADD_PREFIX("PROXY_PID_FILE"); Loading
include/client/rpc/replica.hpp +4 −4 Changes for include/client/rpc/replica.hpp: 4 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -158,12 +158,12 @@ mutation_error_with_replicas(const int replica_count) { inline void validate_replica_count(const int replica_count, const std::size_t host_count) { if(replica_count < 0) { throw std::invalid_argument("LIBGKFS_NUM_REPL must not be negative"); throw std::invalid_argument("GKFS_NUM_REPL must not be negative"); } if(host_count == 0 || static_cast<std::size_t>(replica_count) >= host_count) { throw std::invalid_argument( "LIBGKFS_NUM_REPL must be less than the number of hosts"); "GKFS_NUM_REPL must be less than the number of hosts"); } } Loading @@ -178,12 +178,12 @@ parse_replica_count(const std::string& value) { parsed = std::stoll(value, &consumed, 10); } catch(const std::exception&) { throw std::invalid_argument( "LIBGKFS_NUM_REPL must be a non-negative integer"); "GKFS_NUM_REPL must be a non-negative integer"); } if(consumed != value.size() || parsed < 0 || parsed > std::numeric_limits<int>::max()) { throw std::invalid_argument( "LIBGKFS_NUM_REPL must be a non-negative integer"); "GKFS_NUM_REPL must be a non-negative integer"); } return static_cast<int>(parsed); } Loading
include/common/env.hpp +1 −0 Changes for include/common/env.hpp: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ static constexpr auto DISTRIBUTION_STRATEGY = static constexpr auto RANDOM_SLICING_CUTSHIFT = ADD_PREFIX("RANDOM_SLICING_CUTSHIFT"); static constexpr auto EXPAND_ON_DEMAND = ADD_PREFIX("EXPAND_ON_DEMAND"); static constexpr auto NUM_REPL = ADD_PREFIX("NUM_REPL"); static constexpr auto CREATE_CHECK_PARENTS = ADD_PREFIX("CREATE_CHECK_PARENTS"); static constexpr auto SYMLINK_SUPPORT = ADD_PREFIX("SYMLINK_SUPPORT"); static constexpr auto RENAME_SUPPORT = ADD_PREFIX("RENAME_SUPPORT"); Loading