zfs/module
Rich Ercolani 59eab1093a
Handle partial reads in zfs_read
Currently, dmu_read_uio_dnode can read 64K of a requested 1M in one
loop, get EFAULT back from zfs_uiomove() (because the iovec only holds
64k), and return EFAULT, which turns into EAGAIN on the way out. EAGAIN
gets interpreted as "I didn't read anything", the caller tries again
without consuming the 64k we already read, and we're stuck.

This apparently works on newer kernels because the caller which breaks
on older Linux kernels by happily passing along a 1M read request and a
64k iovec just requests 64k at a time.

With this, we now won't return EFAULT if we got a partial read.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rich Ercolani <rincebrain@gmail.com>
Closes #12370 
Closes #12509
Closes #12516
2021-09-20 10:30:50 -07:00
..
avl Remove avl_size field from struct avl_tree 2021-07-01 09:32:31 -06:00
icp Use fallthrough macro 2021-09-14 10:17:54 -06:00
lua Use fallthrough macro 2021-09-14 10:17:54 -06:00
nvpair A few fixes of callback typecasting (for the upcoming ClangCFI) 2021-07-20 08:03:33 -06:00
os Really zero the zero page 2021-09-17 10:17:18 -07:00
spl Cleanup linux module kbuild files 2020-06-10 09:24:15 -07:00
unicode Fix various typos 2021-04-02 18:52:15 -07:00
zcommon libzfs: add keylocation=https://, backed by fetch(3) or libcurl 2021-05-12 21:21:35 -07:00
zfs Handle partial reads in zfs_read 2021-09-20 10:30:50 -07:00
zstd Fix cross-endian interoperability of zstd 2021-08-30 14:13:46 -07:00
.gitignore Cleanup linux module kbuild files 2020-06-10 09:24:15 -07:00
Kbuild.in Add zstd support to zfs 2020-08-20 10:30:06 -07:00
Makefile.bsd Restore FreeBSD resource usage accounting 2021-02-19 22:34:33 -08:00
Makefile.in FreeBSD module --enable-debug --enable-invariants 2021-03-05 12:16:41 -08:00