Rbd - kernel rbd client supports copy-on-read


Feature copy-on-read will help to improve read perfomance of clone image,
especially when clone image is apart from parent image which is in remote data center


Interested Parties

  • Name (Affiliation)
  • Name (Affiliation)
  • Name

Current Status

Only librbd supports copy-on-read:,
and the copy-on-read algorithm has been accepted.
It is not supported by kernel rbd client currently.

Detailed Description

When read part or entire clone image object, firstly we should stat it from osd to find if object exists in clone image,
if not, just read object content from parent, which is the same as copy-on-write do.
In addtion, record the object has been searched, and keep its data content in memory, those are kept in
copyup_list, then write data content to clone image object asychronously.
The second time read the same object, we frist decide if it has been copied up from parent according to copyup_list.
if copied up, just read object from client memory, else read it from clone image.

Work items

Coding tasks

  1. Add an option, to turn on/off it in user space.
  2. Add list_head copyup_list to struct rbd_img_request to record which object has been read from parent.
  3. Implement state machine of copy-on-read algorithm.

Build / release tasks

  1. Task 1
  2. Task 2
  3. Task 3

Documentation tasks

  1. Task 1
  2. Task 2
  3. Task 3

Deprecation tasks

  1. Task 1
  2. Task 2
  3. Task 3