Hello, This series adds support for object-map and fast-diff image features. Patches 1 - 11 prepare object and image request state machines; patches 12 - 14 fix most of the shortcomings in our exclusive lock code, making it suitable for guarding the object map; patches 15 - 18 take care of the prerequisites and finally patches 19 - 20 implement object-map and fast-diff. Thanks, Ilya Ilya Dryomov (20): rbd: get rid of obj_req->xferred, obj_req->result and img_req->xferred rbd: replace obj_req->tried_parent with obj_req->read_state rbd: get rid of RBD_OBJ_WRITE_{FLAT,GUARD} rbd: move OSD request submission into object request state machines rbd: introduce image request state machine rbd: introduce obj_req->osd_reqs list rbd: factor out rbd_osd_setup_copyup() rbd: factor out __rbd_osd_setup_discard_ops() rbd: move OSD request allocation into object request state machines rbd: rename rbd_obj_setup_*() to rbd_obj_init_*() rbd: introduce copyup state machine rbd: lock should be quiesced on reacquire rbd: quiescing lock should wait for image requests rbd: new exclusive lock wait/wake code libceph: bump CEPH_MSG_MAX_DATA_LEN (again) libceph: change ceph_osdc_call() to take page vector for response libceph: export osd_req_op_data() macro rbd: call rbd_dev_mapping_set() from rbd_dev_image_probe() rbd: support for object-map and fast-diff rbd: setallochint only if object doesn't exist drivers/block/rbd.c | 2433 ++++++++++++++++++-------- drivers/block/rbd_types.h | 10 + include/linux/ceph/cls_lock_client.h | 3 + include/linux/ceph/libceph.h | 6 +- include/linux/ceph/osd_client.h | 10 +- include/linux/ceph/striper.h | 2 + net/ceph/cls_lock_client.c | 47 +- net/ceph/osd_client.c | 18 +- net/ceph/striper.c | 17 + 9 files changed, 1817 insertions(+), 729 deletions(-) -- 2.19.2