librbd:
  Add "copy-on-read" option.
librbd:
  Refactory AioRead:should_complete into state machine.
librbd:
  Add copy-on-read support. When reading the content which is not within the child
  image, copy up the whole entire from parent, extract the content, and push the
  entire object to a copyup queue to writeback asynchronously.
librbd:
   Add unit test TestCOR for testing copy-on-read feature.
Merge branch 'wip-copy-on-read-scratch' into wip-copy-on-read
librbd:
  copy-on-read: fix typo in AioRead state machine notation.
librbd:
  copy-on-read:
    force rbd_clone_copy_on_read in unit test.
librbd:
  copy-on-read:
    after we've read from the child and close it once, make sure copy-on-read
    worked by using rados_list() and checking for objects named after the
    child's block_name_prefix reported by rbd_stat().
librbd:
  copy-on-read:
    Flush the copy-up queue in snap_set as well when transitioning.
librbd:
   copy-on-read: No CoR for snapshot reads.
librbd:
  copy-on-read:
    move m_snaps from AbstractWrite to AioRequst, and initialize m_snaps in
    AioRequest() to avoid duplicating code for both AioRead and AbstractWrite.
librbd:
  copy-on-read: refactoring COR on read path:
  1). If there is a valid buffer in copyup queue, extract content directly;
  2). If there is no copyup request for the oid, issue copyup request;
  3). Otherwise, forward to parent to read content.
librbd:
  copy-on-read: Use RAII style for large block for copyup_queue_lock.
librbd:
  copy-on-read:
   pass object_no as extra context to allow "rbd_copyup_cb" to perform direct
   lookup.
librbd:
  Refactoring the CoR feature to use the waitlist callbacks (instead of
  storing read buffers). This commit only addresses on read path.
librbd:
  Minor fixes for COR:
    1. Move "m_entire_object" and "read_from_parent_cor" to AioRequest.
    2. Cleanup CopyupRequest.
    3. Add more comments.
librbd:
   Modify copy-on-write path to make use of "copyup_waiting_list".
Merge branch 'wip-copy-on-read-dev' into wip-copy-on-read

Conflicts:
	src/common/config_opts.h
	src/librbd/AioRequest.cc
	src/librbd/AioRequest.h
	src/librbd/ImageCtx.cc
	src/librbd/ImageCtx.h
	src/librbd/internal.cc
librbd:
   Amend unit test TestCOR.
librbd:
   Minor fix for writing path to make use of copyup_waiting_list. Use bufferlist.append() instead of bufferlist.copy_in() to copy data.