diff options
| author | Ming Lei <tom.leiming@gmail.com> | 2026-04-09 21:30:18 +0800 |
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2026-04-09 19:10:44 -0600 |
| commit | 289653bb76c46149f88939c3cfef55cdb236ace2 (patch) | |
| tree | 02aec1fa0e5964bb0c856e472f9629a54635c788 /Documentation/block | |
| parent | 365ea7cc62447caac508706b429cdf031cc15a9f (diff) | |
Documentation: ublk: address review comments for SHMEM_ZC docs
- Use "physical pages" instead of "page frame numbers (PFNs)" for
clarity
- Remove "without any per-I/O overhead" claim from zero-copy
description
- Add scatter/gather limitation: each I/O's data must be contiguous
within a single registered buffer
Suggested-by: Caleb Sander Mateos <csander@purestorage.com>
Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Link: https://patch.msgid.link/20260409133020.3780098-7-tom.leiming@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'Documentation/block')
| -rw-r--r-- | Documentation/block/ublk.rst | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/Documentation/block/ublk.rst b/Documentation/block/ublk.rst index e80cc415a739..0413dcd9ef69 100644 --- a/Documentation/block/ublk.rst +++ b/Documentation/block/ublk.rst @@ -492,8 +492,8 @@ The ``UBLK_F_SHMEM_ZC`` feature provides an alternative zero-copy path that works by sharing physical memory pages between the client application and the ublk server. Unlike the io_uring fixed buffer approach above, shared memory zero copy does not require io_uring buffer registration -per I/O — instead, it relies on the kernel matching page frame numbers -(PFNs) at I/O time. This allows the ublk server to access the shared +per I/O — instead, it relies on the kernel matching physical pages +at I/O time. This allows the ublk server to access the shared buffer directly, which is unlikely for the io_uring fixed buffer approach. @@ -507,8 +507,7 @@ tells the server where the data already lives. ``UBLK_F_SHMEM_ZC`` can be thought of as a supplement for optimized client applications — when the client is willing to allocate I/O buffers from -shared memory, the entire data path becomes zero-copy without any per-I/O -overhead. +shared memory, the entire data path becomes zero-copy. Use Cases ~~~~~~~~~ @@ -584,6 +583,9 @@ Limitations the page cache, which allocates its own pages. These kernel-allocated pages will never match the registered shared buffer. Only ``O_DIRECT`` puts the client's buffer pages directly into the block I/O. +- **Contiguous data only**: each I/O request's data must be contiguous + within a single registered buffer. Scatter/gather I/O that spans + multiple non-adjacent registered buffers cannot use the zero-copy path. Control Commands ~~~~~~~~~~~~~~~~ |
