I just noticed another issue related to size updates - aio_append() (or multiple append()s from different threads) to the same striped object could read the same size and overwrite each other. One way to get around that is to use librados' append on the last object and exclusive create (falling back to append again if that fails) on the subsequent objects. That gets complicated though. 

Another solution would be caching the size of the striped object in memory so it can be increased with under a normal mutex. This could be done by keeping the striped object size and layout cached locally in a striped_object_handle or something with an explicit open/close api, and not guaranteeing anything about appends (or even any kind of write) from more than one client. That is an api change though...