Vitaliy Filippov
7b12342933
Allow to specify additional NFS mount options
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
44bf0f16ee
Fix malloc/free in nfs_kv_read/write
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
8840c84572
Fix "bad key in etcd" in mon for FS pools
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
5b747c12ec
Check if already mounted before mounting
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
05f5f46162
Fix zero used space, update mtime when moving/changing inode
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
b5604191c8
Ignore ECANCELED in nfs-proxy (happens in io_uring on fork)
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
e871de27de
Support unaligned shared_offsets, align shared file data instead of header
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
f600ce98e2
Implement auto-unmount local NFS server mode for vitastor-nfs
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
57605a5c13
Return error on failed shrink
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
29bd4561bb
Implement rename over an existing file/directory
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
7142460ec8
Support --logfile in nfs-proxy
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
d03f19ebe5
Fix shared file overlap, add FIXMEs
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
88f9d18be3
Create inode, then direntry, not direntry, then inode; retry ID collisions
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
6213fbd8c6
Fix NFS shared/aligned write FIXMEs
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
3aee37eadd
Allow to disable per-inode stats for VitastorFS pools
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
ecfc753e93
Add basic NFS tests, fix bugs
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
a574f9ad71
Return block NFS implementation back as an option too
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
7c235c9103
Move KV FS header into a separate file
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
e5bb986164
Implement packing small files into shared inodes
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
181795d748
Split new NFS proxy implementation into multiple files
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
8cdc38805b
WIP VitastorFS with metadata storage in VitastorKV
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
0cd455d17f
First just recheck version without actually re-reading block in vitastor-kv
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
32ba653ba6
Fix vitastor-kv hang on reopen & unfinished closed listing
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
231d4b15fc
Add loadable dump format to vitastor-kv (dump)
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
9dc4d5fd7b
Fix freeing r/w buffers on errors in kv_db
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
e58538fa47
Fix eviction when random_pos selects the end
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
11ac9e7024
Implement min/max list_count to make listings during performance test reasonable
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
511bc3df1c
Fix and improve parallel allocation
...
- Do not try to allocate more DB blocks in an inode block until it's "confirmed" and "locked" by the first write
- Do not recheck for new zero DB blocks on first write into an inode block - a CAS failure means someone else is already writing into it
- Throw new allocation blocks away regardless of whether the known_version is 0 on a CAS failure
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
a64f0d1f73
Implement key_prefix for K/V stress test
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
ec5f7c6b87
More fixes
...
- do not overwrite a block with older version if known version is newer
(read may start before update and end after update)
- invalidated block versions can't be remembered and trusted
- right boundary for split blocks is right_half when diving down, not key_lt
- restart update also when block is "invalidated", not just on version mismatch
- copy callback in listings to avoid closure destruction bugs too
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
3ebed9a749
Add logging and one more assert
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
eab67a6e8f
Make get_block() wait for updating when unrelated block is found along the path
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
20993d9b7a
Fix a race condition where changed blocks were parsed over existing cached blocks and getting a mix of data
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
5cf9b343c0
Simplify code by removing an unneeded "optimisation"
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
79ae0aadcd
Add kv_log_level, print warnings on level 1, trace ops on level 10
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
605afc3583
Fix duplicate keys in listings on parallel updates -- do not rewind key "iterator position"
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
c0681d8242
Implement key suffix to avoid collisions of multiple test workers
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
763e77b4f4
Do not complain on empty first block
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
19426aa4c5
Add JSON output for stress-tester
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
08f586bcec
Print total stats
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
f1cd87473a
Do not send more than op_count operations (fix segfault on finish)
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
1bd8d2da56
Add some more resiliency to serialize()
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
a7396d2baf
Invalidate blocks being updated too
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
e98a38810d
Change new block allocation method: make each writer choose multiple empty PG blocks and place blocks in them
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
28c4324c36
Remove blocks from cache on unsuccessful updates
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
31ec3fa8f5
Allow to track multiple updates per block (it should never happen though)
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
e4fa26f60a
Do not call stop_updating after failed write_new_block and after clear_block (both delete the item)
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
59ae27f9e5
Track versions of parent blocks and recheck if changed during update
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
2c6a301d9b
Fix resume_split condition (key_lt can also be "")
2024-03-16 13:24:36 +03:00
Vitaliy Filippov
01558349f8
Experiment: transform offsets for better sharding
2024-03-16 13:24:36 +03:00