rbd: introduce obj_req->osd_reqs list
authorIlya Dryomov <idryomov@gmail.com>
Mon, 27 May 2019 09:41:36 +0000 (11:41 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 8 Jul 2019 12:01:44 +0000 (14:01 +0200)
commitbcbab1db6c95a9abe7793c186f87fd41f1b8d4ea
tree38d3992706f8bc7d76db2b0349e5610ab29f5b21
parent94e85771881027e62afdddadd31e3eec73025990
rbd: introduce obj_req->osd_reqs list

Since the dawn of time it had been assumed that a single object request
spawns a single OSD request.  This is already impacting copyup: instead
of sending empty and current snapc copyups together, we wait for empty
snapc OSD request to complete in order to reassign obj_req->osd_req
with current snapc OSD request.  Looking further, updating potentially
hundreds of snapshot object maps serially is a non-starter.

Replace obj_req->osd_req pointer with obj_req->osd_reqs list.  Use
osd_req->r_private_item for linkage.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Dongsheng Yang <dongsheng.yang@easystack.cn>
drivers/block/rbd.c