On 11/19/21 02:47, Kanchan Joshi wrote:
Given the multitude of things accumulated on this topic, Martin suggested to have a table/matrix. Some of those should go in the initial patchset, and the remaining are to be staged for subsequent work. Here is the attempt to split the stuff into two buckets. Please change if something needs to be changed below. 1. Driver ********* Initial: NVMe Copy command (single NS) Subsequent: Multi NS copy, XCopy/Token-based Copy 2. Block layer ************** Initial: - Block-generic copy (REQ_OP_COPY), with interface accommodating two block-devs - Emulation, when offload is natively absent - DM support (at least dm-linear) 3. User-interface ***************** Initial: new ioctl or io_uring opcode 4. In-kernel user ****************** Initial: at least one user - dm-kcopyd user (e.g. dm-clone), or FS requiring GC (F2FS/Btrfs) Subsequent: - copy_file_range
Integrity support and inline encryption support are missing from the above overview. Both are supported by the block layer. See also block/blk-integrity.c and include/linux/blk-crypto.h. I'm not claiming that these should be supported in the first version but I think it would be good to add these to the above overview. Thanks, Bart.