WIP VitastorFS with metadata storage in VitastorKV
Test / buildenv (push) Successful in 11s Details
Test / build (push) Successful in 3m57s Details
Test / test_cas (push) Successful in 8s Details
Test / make_test (push) Successful in 35s Details
Test / test_change_pg_count (push) Successful in 38s Details
Test / test_change_pg_size (push) Successful in 9s Details
Test / test_change_pg_count_ec (push) Successful in 40s Details
Test / test_create_nomaxid (push) Successful in 8s Details
Test / test_interrupted_rebalance_imm (push) Successful in 1m19s Details
Test / test_add_osd (push) Successful in 2m43s Details
Test / test_interrupted_rebalance_ec_imm (push) Successful in 1m21s Details
Test / test_failure_domain (push) Successful in 9s Details
Test / test_snapshot (push) Successful in 20s Details
Test / test_snapshot_ec (push) Successful in 23s Details
Test / test_minsize_1 (push) Successful in 13s Details
Test / test_move_reappear (push) Successful in 21s Details
Test / test_rm (push) Successful in 14s Details
Test / test_interrupted_rebalance_ec (push) Successful in 3m26s Details
Test / test_etcd_fail (push) Successful in 5m51s Details
Test / test_snapshot_down (push) Successful in 25s Details
Test / test_snapshot_chain (push) Successful in 1m38s Details
Test / test_snapshot_down_ec (push) Successful in 23s Details
Test / test_splitbrain (push) Successful in 21s Details
Test / test_snapshot_chain_ec (push) Successful in 3m0s Details
Test / test_rebalance_verify_imm (push) Successful in 2m28s Details
Test / test_interrupted_rebalance (push) Failing after 10m7s Details
Test / test_write (push) Successful in 39s Details
Test / test_rebalance_verify_ec (push) Successful in 3m52s Details
Test / test_rebalance_verify_ec_imm (push) Successful in 2m35s Details
Test / test_write_no_same (push) Successful in 15s Details
Test / test_rebalance_verify (push) Successful in 6m48s Details
Test / test_write_xor (push) Failing after 3m10s Details
Test / test_heal_ec (push) Successful in 4m21s Details
Test / test_heal_pg_size_2 (push) Successful in 4m33s Details
Test / test_heal_csum_32k_dmj (push) Successful in 5m6s Details
Test / test_heal_csum_32k_dj (push) Successful in 5m52s Details
Test / test_heal_csum_32k (push) Successful in 6m22s Details
Test / test_heal_csum_4k_dmj (push) Successful in 6m20s Details
Test / test_scrub_zero_osd_2 (push) Successful in 37s Details
Test / test_scrub (push) Successful in 40s Details
Test / test_scrub_xor (push) Successful in 53s Details
Test / test_heal_csum_4k_dj (push) Successful in 6m12s Details
Test / test_scrub_pg_size_3 (push) Failing after 1m54s Details
Test / test_scrub_ec (push) Successful in 1m12s Details
Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 1m46s Details
Test / test_heal_csum_4k (push) Successful in 6m16s Details

Vitaliy Filippov 2024-01-03 16:16:38 +03:00
parent 37915d8315
commit 576694c780
3 changed files with 1529 additions and 696 deletions

View File

@ -181,23 +181,29 @@ target_link_libraries(vitastor-nbd
vitastor_client
)
# vitastor-kv
add_executable(vitastor-kv
kv_cli.cpp
# libvitastor_kv.so
add_library(vitastor_kv SHARED
kv_db.cpp
kv_db.h
)
target_link_libraries(vitastor-kv
target_link_libraries(vitastor_kv
vitastor_client
)
set_target_properties(vitastor_kv PROPERTIES VERSION ${VERSION} SOVERSION 0)
# vitastor-kv
add_executable(vitastor-kv
kv_cli.cpp
)
target_link_libraries(vitastor-kv
vitastor_kv
)
add_executable(vitastor-kv-stress
kv_stress.cpp
kv_db.cpp
kv_db.h
)
target_link_libraries(vitastor-kv-stress
vitastor_client
vitastor_kv
)
# vitastor-nfs
@ -213,6 +219,7 @@ add_executable(vitastor-nfs
)
target_link_libraries(vitastor-nfs
vitastor_client
vitastor_kv
)
# vitastor-cli

File diff suppressed because it is too large Load Diff

View File

@ -4,6 +4,7 @@
#include "epoll_manager.h"
#include "nfs_portmap.h"
#include "nfs/xdr_impl.h"
#include "kv_db.h"
#define RPC_INIT_BUF_SIZE 32768
@ -16,6 +17,22 @@ struct nfs_dir_t
timespec mtime;
};
struct list_cookie_t
{
uint64_t dir_ino, cookieverf, cookie;
};
inline bool operator < (const list_cookie_t & a, const list_cookie_t & b)
{
return a.dir_ino < b.dir_ino || a.dir_ino == b.dir_ino &&
(a.cookieverf < b.cookieverf || a.cookieverf == b.cookieverf && a.cookie < b.cookie);
};
struct list_cookie_val_t
{
std::string key;
};
class nfs_proxy_t
{
public:
@ -27,6 +44,7 @@ public:
std::string export_root;
bool portmap_enabled;
unsigned nfs_port;
int readdir_getattr_parallel = 8, id_alloc_batch_size = 200;
pool_id_t default_pool_id;
@ -35,6 +53,12 @@ public:
epoll_manager_t *epmgr = NULL;
cluster_client_t *cli = NULL;
cli_tool_t *cmd = NULL;
kv_dbw_t *db = NULL;
uint64_t root_uid = 0, root_gid = 0;
std::map<list_cookie_t, list_cookie_val_t> list_cookies;
uint64_t fs_min_id = 0, fs_max_id = 0;
uint64_t fs_next_id = 0, fs_allocated_id = 0;
std::vector<uint64_t> unallocated_ids;
std::vector<XDR*> xdr_pool;
@ -106,6 +130,8 @@ struct extend_write_t
struct extend_inode_t
{
uint64_t cur_extend = 0, next_extend = 0;
std::string old_ientry;
json11::Json::object attrs;
};
class nfs_client_t