Fix vitastor-cli rm-data removing data outside the requested range or pool #93
Closed
koolkhel
wants to merge 2 commits from
koolkhel/vitastor:cli-rm-data into master
pull from: koolkhel/vitastor:cli-rm-data
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 | |
|---|---|---|---|---|
| 1742cdc081 |
Accept pool names and hex inode numbers in vitastor-cli rm-data
rm-data read --pool and --inode with uint64_value(), so a pool name became 0 and the pool was silently taken from the inode's pool bits, i.e. "--pool <other pool> --inode <full inode number>" removed data in a different pool than requested. A hex --inode became 0 and rm-data "removed" inode 0, reporting success. Resolve pool names like ls does (ENOENT for an unknown pool), parse --inode as decimal or 0x hex, and fail with EINVAL on anything else before removing data. |
|||
| 66434e3220 |
Fix vitastor-cli rm-data ignoring offsets with size suffixes
rm-data read --min-offset and --max-offset with uint64_value(), which returns 0 for "8M", "-8M" or "0x1000", and 0 means "from the start" and "no upper limit". So a range given with a suffix removed the whole inode instead of a part of it, and the command reported success. Parse offsets as decimal or 0x hex with an optional K/M/G/T suffix, reject signs and values that overflow 64 bits, and fail with EINVAL before removing anything if a value is invalid, the range is empty or reversed, or --max-offset is explicitly 0 (omit it for no limit). |