Stop K/V listings at the end of their range #111
Closed
koolkhel
wants to merge 2 commits from
koolkhel/vitastor:kv-list-end into master
pull from: koolkhel/vitastor:kv-list-end
merge into: vitalif:master
vitalif:master
vitalif:tombstones
vitalif:primary-stickiness
vitalif:libvfn
vitalif:canceling
vitalif:immediate-repeering
vitalif:rdma-close-tcp
vitalif:use-degraded-writes
vitalif:fix-write-delete-flow
vitalif:openssl-3.0.12
vitalif:openssl-capture-secrets
vitalif:ignore-small-rdma-end
vitalif:encrypt-batch
vitalif:faster-peering-calc
vitalif:http-hello
vitalif:xxh3-bench
vitalif:create-user-etcd-based
vitalif:aesxts_streaming_nosupport
vitalif:refactor-heap-continue-write
vitalif:ston3lu-patch-0127
vitalif:rdma-credits
vitalif:heap-meta
vitalif:sendmsg-zc-no-more-error
vitalif:fix-clear-refs
vitalif:veeam-trick
vitalif:test-etcd-schizo
vitalif:test
vitalif:test1
vitalif:test2
vitalif:cow-meta
vitalif:kv-readahead
vitalif:qemu-fix-crash-idea
vitalif:eventloop-auto-init-trigger
vitalif:hugo-docs
vitalif:node-mutex-and-postpone
vitalif:check-writeback
vitalif:msgr-iothreads-v2
vitalif:antietcd
vitalif:rel-1.4
vitalif:test-fix-ec-unknown-state-51
vitalif:kv-update
vitalif:kv-debug
vitalif:hotfix-1.2.0
vitalif:rdma-simple-nodp
vitalif:zerocopy-tcp-send
vitalif:csi-staging
vitalif:hotfix-1.1.0
vitalif:hotfix-1.0.0
vitalif:fsync-feedback
vitalif:cached-reads
vitalif:qemu-send-loop
vitalif:test-double-alloc
vitalif:hier-failure-domains
vitalif:mon-self-restart
vitalif:epoch-deletions
vitalif:rdma-flow-control
vitalif:csi-use-vitastor-cli
vitalif:rdma-v2
vitalif:etcd-hide-base64
vitalif:lrc-matrix
vitalif:rm-left-on-dead
vitalif:nfs-proxy-old
vitalif:non-odp-rdma
vitalif:test-zctr
vitalif:separate-data-connections
vitalif:sec_osd_msgr
vitalif:test-assert
vitalif:nbd-vmsplice
vitalif:allow-etcd-address-option
vitalif:rdma-zerocopy
vitalif:rel-0.5
vitalif:openonload
vitalif:sync-io-test
vitalif:trace-sync
vitalif:trace-sqes
vitalif:test-submit-and-wait
vitalif:test-sq-poll
vitalif:blocking-uring-test
2 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
c3303a4122 |
Stop NFS prefix scans at the end of the prefix
The emptiness checks of RMDIR and of RENAME over a directory, READDIR and the defrag scans list a key prefix. They now stop at the end of the prefix instead of running on to the next existing key through blocks emptied by deletes, which made RMDIR slower with every deleted file. This also fixes RENAME of a directory over an empty directory failing with ENOTEMPTY: its check took the first key after the prefix, which belongs to another directory or inode, for an entry. |
||
|
|
bf89e7e0d2 |
Add an end key to K/V listings
A listing goes on from block to block until it finds a key, and blocks emptied by deletes are never freed. So a listing that runs past the end of its range reads every empty block up to the next existing key, each with a version check on an OSD. After many creates and deletes, this made a single RMDIR in the NFS proxy take hundreds of milliseconds. list_start(start, end) stops at the first key >= end and does not read blocks beyond it. vitastor-kv list/dump/dumpjson now pass their end argument. |