It was my intention to make a helpful improvement along the way, but I have
no capacity at the moment for a longer process.
This reverts commit d6aef69a6b1da8fc8e392d2de159a0861418d7ce.
This reverts commit 9b76b9a4baa4fedd2fb3a904b0dceafd263d0ddc.
This reverts commit 8fc1b2c3af3eea0aa0a424fdc6bb76788a9f5661.
Return a consistent boc state from ObjWaitExtend()
Clients to the Object API need to know not only the current extension
(new length) of streaming objects, but also the streaming state - in
particular BOS_FINISHED and BOS_FAILED. The latter for obvious
reasons, and the former to call the delivery function with
OBJ_ITER_END, which then likely results in VDP_END sent down the
delivery pipeline.
Background:
It is important for efficient delivery to not receive an additional
VDP_END with a null buffer, but rather combined with the last chunk of
data, so, consequently, it is important to reliably send OBJ_INTER_END
also with the last chunk of data.
Consequent to all of this, ObjWaitExtend() callers need to know when
BOS_FINISHED has been reached for some extension.
The current API, however, does not provide a consistent view of the
streaming state, which is only available from within the critical region
of ObjWaitExtend().
Thus, we add the streaming state as an optional return value.
With this commit, we also remove a superfluous line to set rv again:
Because boc->fetched_so_far must only be updated while holding the boc
mutex, reading the value again provides no benefit.
Create a directory owned by the worker process for use as a TMPDIR
Processes created by the worker might require a TMPDIR for temporary
files (think: filters). Create a dedicated directory for this purpose,
which is otherwise hard to achieve in a universal manner.
ba7bf7f...
by
Dridi Boukelmoune <email address hidden>
vsm: Do not store MAP_FAILED in a VSM segment
The problem is that a MAP_FAILED segment ends up in its vsm_set::segs
list, at which point NULL checks will determine what to do with the
segment, and MAP_FAILED != NULL.
This can happen when winning (or losing?) the race with a VSC segment
that goes away after being found in the index, but before being mapped.
One surefire result is a crash in vsm_unmapseg() tripping on assertions
that other fields are also not NULL. There may be other unidentified ill
effects.