Files
linux/include/linux
Christoph Hellwig 8dd5e7c75d block: add helpers to bounce buffer an iov_iter into bios
Add helpers to implement bounce buffering of data into a bio to implement
direct I/O for cases where direct user access is not possible because
stable in-flight data is required.  These are intended to be used as
easily as bio_iov_iter_get_pages for the zero-copy path.

The write side is trivial and just copies data into the bounce buffer.
The read side is a lot more complex because it needs to perform the copy
from the completion context, and without preserving the iov_iter through
the call chain.  It steals a trick from the integrity data user interface
and uses the first vector in the bio for the bounce buffer data that is
fed to the block I/O stack, and uses the others to record the user
buffer fragments.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Anuj Gupta <anuj20.g@samsung.com>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Tested-by: Anuj Gupta <anuj20.g@samsung.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2026-01-28 05:16:39 -07:00
..
2025-10-22 07:54:33 +02:00
2025-11-11 10:01:30 +01:00
2025-11-18 22:26:02 +05:30
2025-10-13 11:27:52 +01:00
2025-09-05 15:06:03 +02:00
2025-07-21 18:18:51 +01:00
2025-07-31 11:28:03 -04:00
2025-12-09 23:29:42 -08:00
2025-09-24 02:48:05 -07:00
2025-11-21 11:21:31 +01:00
2025-10-27 09:56:27 -07:00
2025-05-21 13:39:45 +02:00
2025-08-14 10:37:33 -07:00
2025-11-04 12:36:57 +01:00
2025-09-23 11:13:22 +02:00
2025-10-22 07:55:00 +02:00
2025-11-01 12:44:49 -05:00
2025-12-13 20:04:32 +12:00
2025-12-16 00:57:29 -05:00
2025-08-21 13:58:07 +02:00
2025-07-16 14:28:21 +02:00
2025-05-22 11:07:05 +02:00
2025-10-29 18:28:29 -07:00
2025-09-13 17:32:44 -07:00
2025-08-29 13:39:53 -07:00
2025-11-04 12:36:02 +01:00
2025-08-02 12:06:10 -07:00
2025-10-22 07:53:15 +02:00
2025-09-23 11:13:22 +02:00
2025-06-11 11:57:14 -07:00
2025-07-02 17:18:01 +01:00
2025-10-24 21:39:27 +02:00
2025-07-17 06:01:16 -06:00
2025-11-23 12:30:40 +01:00
2025-11-20 13:43:59 -08:00
2025-07-09 22:41:56 -07:00
2025-09-17 15:58:29 -04:00
2025-06-17 18:18:46 -07:00
2025-11-04 19:10:33 -08:00
2025-09-23 13:28:20 -04:00
2025-11-05 23:58:20 +01:00
2025-11-03 17:41:17 +01:00
2025-11-11 10:01:30 +01:00
2025-05-21 16:46:37 +02:00
2025-09-13 16:55:07 -07:00
2025-06-19 14:28:24 +02:00
2025-06-19 14:28:24 +02:00
2025-08-24 11:41:11 -06:00
2025-07-01 12:29:29 +02:00
2025-10-30 18:35:26 +01:00
2025-10-24 21:39:27 +02:00
2025-10-31 10:16:23 +01:00
2025-11-27 14:24:30 -08:00
2025-11-18 17:52:54 +01:00
2025-11-11 13:18:56 +01:00
2025-11-28 09:21:18 -07:00
2025-08-28 13:14:50 +02:00
2025-11-27 14:22:31 +01:00
2025-11-20 17:57:40 -08:00
2025-11-03 17:41:18 +01:00
2025-11-03 19:27:41 -08:00
2025-08-17 12:46:25 +02:00
2025-11-03 17:41:18 +01:00
2025-10-01 07:24:55 -04:00
2025-12-24 08:02:55 -05:00
2025-11-24 15:08:54 -08:00
2025-07-17 11:26:56 +02:00
2025-11-12 09:38:34 +01:00