librbd: refactoring copy-on-read -- offload functions and members to AioRead
from AioRequest.
librbd: use "read_from_parent" to read the entire object for copy-on-read.
librbd: add copyup_list to ImageCtx to keep track of asynchronously copyup operation.
librbd: remove "read_from_parent_cor" and "m_parent_completion_cor".
librbd: finishing coding task for copy-on-read, need test case to verify.
librbd: More clear debug information for verifying copy-on-read
librbd: Add test case TestCOR for testing.
librbd: refactor AioRequest using a simple state machine to handle copy-on-read transaction.
librbd: minor modifiction for TestCOR to read more data from the same object
librbd: change state machine, eliminate always go through LIBRBD_AIO_READ_FLAT.
librbd: Use a map to keep track of asynchronous copyups. Allocate the entire object
buffer from the map to avoid early deconstruction problem.
librbd: When trying to read from parent, first check whether there is a copyup
task queued in the copyup_queue. If there is a task and the object is read back,
just grab it.
librbd: When copying on write, first check whether the object is in the
copyup_queue. If it is, push it first.