On Fri, 18 Jan 2019 15:56:05 +0100, Roman Penyaev wrote: > Hi all, > > This is an attempt to split DISCARD and WRITE_ZEROES paths on krbd side > when REQ_NOUNMAP flag is set for a block layer request. > > Currently both REQ_OP_DISCARD and REQ_OP_WRITE_ZEROES block layer requests > fall down to CEPH_OSD_OP_ZERO request, which punches holes on osd side. > > With a new CEPH_OSD_OP_FLAG_ZERO_NOUNMAP flag for CEPH_OSD_OP_ZERO request > osd can zero out blocks, instead of punching holes. I think I'd prefer to have the WRITE_SAME conversion done on the client side (handled alongside REQ_OP_WRITE_SAME), with EOPNOTSUPP propagated up to callers when REQ_NOUNMAP is requested against an old cluster. If that's considered too unkind to existing REQ_NOUNMAP consumers, then this approach looks reasonable to me. Cheers, David