Details
-
Technical task
-
Resolution: Unresolved
-
Minor
-
None
-
None
-
None
-
9223372036854775807
Description
The client saves a large LOV EA into the request buffer so that it is available for replaying a failed create with layout instantiation. We save the reply LOV EA in case we have to replay a create for recovery. If we didn't allocate a large enough request buffer, we need to reallocate it to hold the actual LOV EA.
We do not do this in the initial request becuase the original request doesn't need this buffer and it is a waste of RAM/bandwidth to send the empty buffer and may also be difficult to allocate and save a very larger request buffer for layout EA.
However, for a batched create() RPC under WBC, saving the replied LOV EA into the request buffer for replay means that we need to enlarge the request buffer, it will change the registered bulk buffer, and it may add the complexity for the replay recovery. Thus, we don't allocate the LOV EA for batched creations, just create metadata without layout instantiation.
We delay to instantiate the layout until the time of flushing the cache pages.
We also need to implement a lockless layout intent write under the WBC root lock.