Should we try to ensure that librbd and krbd have (semi) matching discard behavior? In librbd, a full object discard on an overlapping child will truncate the child object to size zero instead of issuing a delete. With this krbd change, if a child object had previously been written and now was discarded, the parent data will become visible again since the child object is deleted. This could be prevented by issuing a "assert_exists" + "truncate(0)" op to prevent the implicit zeroing of a full object extent if it was never written and would prevent the parent data from becoming visible again after a discard. Obviously the data is still consistent either way but it would be good to match. Otherwise, lgtm. Reviewed-by: Jason Dillaman <dillaman@xxxxxxxxxx> On Tue, Jan 29, 2019 at 10:47 AM Ilya Dryomov <idryomov@xxxxxxxxx> wrote: > > Hello, > > This should help the "-o discard" case and improve performance across > the board, although we don't have a solution for querying the object > store backend and passing the appropriate value for alloc_size yet. > > Ilya Dryomov (3): > rbd: get rid of obj_req->obj_request_count > rbd: handle DISCARD and WRITE_ZEROES separately > rbd: round off and ignore discards that are too small > > drivers/block/rbd.c | 111 +++++++++++++++++++++++++++++++++++++++++++--------- > 1 file changed, 92 insertions(+), 19 deletions(-) > > -- > 2.14.4 > -- Jason