A chunk can be frozen by a client meaning it can no longer be appended to. I think we don't need to enforce the full size limit and accept some internal fragmentation instead, as this means the contents of short appends remain contiguous within a single chunk.
When a file is created, the first chunk is automatically allocated and returned.
To add a new chunk to the tail of the file, the current tail must be frozen. By passing this information up, we can atomically check the current tail (with a CAS probably) and create a new chunk.
It doesn't really make sense to append a new chunk on a file without first knowing if the parent chunk is full
A chunk can be frozen by a client meaning it can no longer be appended to. I think we don't need to enforce the full size limit and accept some internal fragmentation instead, as this means the contents of short appends remain contiguous within a single chunk.