Re: [PATCHv10 0/9] write hints with nvme fdp, scsi streams

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/27/24 12:14 PM, Martin K. Petersen wrote:
Once I had support for token-based copy offload working, it became clear
to me that this approach is much simpler than pointer matching, bio
pairs, etc. The REQ_OP_COPY_IN operation and the REQ_OP_COPY_OUT
operation are never in flight at the same time. There are no
synchronization hassles, no lifetimes, no lookup tables in the sd
driver, no nonsense. Semantically, it's a read followed by a write.

What if the source LBA range does not require splitting but the
destination LBA range requires splitting, e.g. because it crosses a
chunk_sectors boundary? Will the REQ_OP_COPY_IN operation succeed in
this case and the REQ_OP_COPY_OUT operation fail? Does this mean that a
third operation is needed to cancel REQ_OP_COPY_IN operations if the
REQ_OP_COPY_OUT operation fails?

Additionally, how to handle bugs in REQ_OP_COPY_* submitters where a
large number of REQ_OP_COPY_IN operations is submitted without
corresponding REQ_OP_COPY_OUT operation? Is perhaps a mechanism required
to discard unmatched REQ_OP_COPY_IN operations after a certain time?

Aside from making things trivially simple, the COPY_IN/COPY_OUT semantic
is a *requirement* for token-based offload devices.

Hmm ... we may each have a different opinion about whether or not the COPY_IN/COPY_OUT semantics are a requirement for token-based copy
offloading.

Additionally, I'm not convinced that implementing COPY_IN/COPY_OUT for
ODX devices is that simple. The COPY_IN and COPY_OUT operations have
to be translated into three SCSI commands, isn't it? I'm referring to
the POPULATE TOKEN, RECEIVE ROD TOKEN INFORMATION and WRITE USING TOKEN
commands. What is your opinion about how to translate the two block
layer operations into these three SCSI commands?

Why would we even consider having two incompatible sets of copy
offload semantics coexist in the block layer?
I am not aware of any proposal to implement two sets of copy operations
in the block layer. All proposals I have seen so far involve adding a
single set of copy operations to the block layer. Opinions differ
however about whether to add a single copy operation primitive or
separate IN and OUT primitives.

Thanks,

Bart.







[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux