summary: Rbd clone shares objects with its parent, unless writing data to clone. When read data from clone, it copy data from its parent if object doesn't exits in clone. Each time read the same object(not in clone), the clone must send request to its parent. Usually the network latency is bottleneck of read performance. If store the object into clone after copyup it from parent, then the next time read the same object just in clone, which can improve read performance. Copy entire object from parent,no matter read entire or part of object. Min Chen (3): librbd: copy-on-read for clones, add an option for copy-on-read librbd: copy-on-read for clones, read entire object from parent librbd: copy-on-read for clones, write entire object into child asychronously src/common/config_opts.h | 1 + src/include/xlist.h | 1 + src/librbd/AioRequest.cc | 88 ++++++++++++++++++++++++++++++++++++++++++++-- src/librbd/AioRequest.h | 4 +++ src/librbd/ImageCtx.cc | 68 +++++++++++++++++++++++++++++++++++ src/librbd/ImageCtx.h | 6 ++++ src/librbd/internal.cc | 4 +++ 7 files changed, 169 insertions(+), 3 deletions(-) -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html