Hello Keith, On Wed, May 21, 2025 at 03:31:05PM -0700, Keith Busch wrote: > From: Keith Busch <kbusch@xxxxxxxxxx> > > Register the nvme namespace copy capablities with the request_queue > limits and implement support for the REQ_OP_COPY operation. Since you never initialize Descriptor Format (DESFMT), you will use Descriptor Format 0 (No SNSID, 16b Guard PI). That is understandable, since your block layer API intentionally does not support cross-device copies. But I would have expected you to somehow mention the descriptor type format used somewhere in the commit message and somewhere in the code (as a comment). I haven't followed all the work that has happened wrt. PI in the block layer recently, so I don't know, but I can see that nvme_set_app_tag() can set a app tag in the request itself, and that nvme_set_ref_tag() supports both 16b Guard PI and 64b Guard PI. Do we ever want to set the ELBT/ELBAT/ELBATM in the nvme_copy_range struct? And if the namespace is using 64b Guard PI, do we want to use Descriptor Format 1 (No SNSID, 32b/64b Guard PI) rather than Descriptor Format 0 ? Kind regards, Niklas