Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Clarify and fix STV_NewObject() len/wsl argument use
It was not documented explicitly anywhere, but the len/wsl argument to STV_NewObject() is the amount of space to allocate for all OBJ_VARATTRs combined which are going to be written to this object. For now, these are OA_HEADERS and OA_VARY only (see include/tbl/obj_attr.h). So for one, there is no reason to force this argument be greater than zero when we know that no OBJ_VARATTRs are going to be set. Secondly, this might actually represent a minor shortcoming of the stevedore API, because the amount of space which a stevedore implementation actually needs might be larger than what the simple stevedores use. So for now, the semantics of this argument are, more specifically, "the equivalent of space for OBJ_VARATTRs as for simple storage". In practice, this probably does not matter much... But even before this clarification, the API was not used consistently: For the call from vrb_pull(), the maximum request body size (to cache) was used as the wsl argument, yet it has nothing to do with the object body size, it specifies the amount of space to allocate for variable sized object attributes (see above). For the call from cnt_synth(), a somehow arbitrary value of 1KB was used. In both cases, the amount of space actually required is zero, because the only attribute used on the objects created is OA_LEN, which is fixed and thus always present.
- Loading branch information