On Thu, Jul 6, 2017 at 11:46 AM, Piotr Dałek <piotr.dalek@xxxxxxxxxxxx> wrote: > How about a hybrid solution? Keep the old rbd_aio_write contract (don't copy > the buffer with the assumption that it won't change) and instead of > constructing bufferlist containing bufferptr to copied data, construct a > bufferlist containing bufferptr made with create_static(user_buffer)? We must be talking past each other -- there was never such a pre-Lumunous contract since (1) it did copy the buffer on every IO and (2) it could have potentially copied before the 'rbd_aio_write' call returned or after (but at least before the completion was fired). Just because it works some times doesn't mean it would always work since it would be a race between two threads. Unfortunately, until the librados issue is solved, you will still have to copy the data once when using the C++ API. The only advantage is that you would be responsible for the copying and it would only need to be performed once instead of twice. -- Jason _______________________________________________ ceph-users mailing list ceph-users@xxxxxxxxxxxxxx http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com