s3gw
s3gw copied to clipboard
rgw/sfs: make multipart `complete` async, in the background
Currently, we are building the final object synchronously, during the complete
request. This works fine because we rely on copy_file_range()
to perform the data copy -- thus avoiding reading and writing the data twice, at least on filesystems that support reflinks.
However, we have several places in this function where we can transiently fail, with no prejudice to the validity of the operation itself, and we should be able to retry it at a later stage -- the client will likely not retry the operation, as it expects this operation to be async.
We should ensure that our operation happens in the background, as expected, so that the client does not hang while we build the final objects.