zfs/module
Rich Ercolani 2ef1ce66f5 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-11-12 16:31:55 -08:00
..
avl Links in Source Files 2020-09-03 16:17:18 -07:00
icp Extending FreeBSD UIO Struct 2021-11-12 16:31:55 -08:00
lua Use fallthrough macro 2021-11-12 15:24:36 -08:00
nvpair Update `checkstyle` workflow env to ubuntu-20.04 2021-11-12 16:31:55 -08:00
os Cleaning up uio headers 2021-11-12 16:31:55 -08:00
spl Cleanup linux module kbuild files 2020-06-10 09:24:15 -07:00
unicode Update `checkstyle` workflow env to ubuntu-20.04 2021-11-12 16:31:55 -08:00
zcommon Fix AVX512BW Fletcher code on AVX512-but-not-BW machines 2021-06-23 13:22:14 -07:00
zfs Handle partial reads in zfs_read 2021-11-12 16:31:55 -08:00
zstd Fix cross-endian interoperability of zstd 2021-11-12 15:24:36 -08: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-03-05 12:50:32 -08:00
Makefile.in Update `checkstyle` workflow env to ubuntu-20.04 2021-11-12 16:31:55 -08:00