On 23/06/08 09:24PM, Christoph Hellwig wrote:
On Thu, Jun 08, 2023 at 05:38:17PM +0530, Nitesh Shetty wrote:
Sure, we can do away with subsys and realign more on single namespace copy.
We are planning to use token to store source info, such as src sector,
len and namespace. Something like below,
struct nvme_copy_token {
struct nvme_ns *ns; // to make sure we are copying within same namespace
/* store source info during *IN operation, will be used by *OUT operation */
sector_t src_sector;
sector_t sectors;
};
Do you have any better way to handle this in mind ?
In general every time we tried to come up with a request payload that is
not just data passed to the device it has been a nightmare.
So my gut feeling would be that bi_sector and bi_iter.bi_size are the
ranges, with multiple bios being allowed to form the input data, similar
to how we implement discard merging.
The interesting part is how we'd match up these bios. One idea would
be that since copy by definition doesn't need integrity data we just
add a copy_id that unions it, and use a simple per-gendisk copy I/D
allocator, but I'm not entirely sure how well that interacts stacking
drivers.
V13[1] implements that route. Please see if that matches with what you had
in mind?
[1] https://lore.kernel.org/linux-nvme/20230627183629.26571-1-nj.shetty@xxxxxxxxxxx/
Thank you,
Nitesh Shetty