• Nils Goroll's avatar
    Clarify and fix STV_NewObject() len/wsl argument use · 532e9c20
    Nils Goroll authored
    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.
    532e9c20
cache_req_fsm.c 31.1 KB