Skip to content
Commit 477005cd authored by Marc Vef's avatar Marc Vef
Browse files

Merge branch 'marc/293-remove-superfluous-rpc-during-remove' into 'master'

Resolve "Remove superfluous RPC during remove"

This MR improves remove() performance by avoiding one RPC. 

Before the change, the metadata of a path was fetched to check whether it is a directory or file. This is important because `rmdir()` and `unlink()` should not delete the wrong object. However, this meant that two RPCs were done per remove operation.

This update changes this behavior by checking the directory/file on the server during any remove operation. For this, an additional RPC field was added, which communicates whether the intent is to remove a directory. Overall, the semantics stay the same. The special case for `rename()` still requires the metadata check beforehand and is unchanged.

IO500 has shown that this optimization doubles throughput for latency-sensitive operations, i.e., zero-byte files or small files.

Depends on https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/191

Closes #293

Closes #293

See merge request !195
parents 9dd6ebef b0ba5789
Pipeline #4648 failed with stages
in 15 minutes and 8 seconds