Bug 42006

Summary: Ошибка чтения EIO на NFS 4.2 из-за поддержки READ_PLUS
Product: Sisyphus Reporter: Vitaly Lipatov <lav>
Component: kernel-image-std-defAssignee: Vitaly Chikunov <vt>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: kernelbot, vt
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Vitaly Lipatov 2022-02-21 01:42:54 MSK
Наткнулся на то, что на ядрах 5.10 при чтении больших (более 1Гб) файлов возникают ошибки чтения

lseek(3, 1360307200, SEEK_SET)          = 1360307200
read(3, 0x559cb8606000, 2048)           = -1 EIO (Input/output error)


Нагуглил, что это похоже на проблему с поддержкой READ_PLUS:

Hmm... If this is NFSv4.2 do you have READ_PLUS turned on or off in
.config? It really is not safe to enable READ_PLUS on 5.10 kernels
since that can cause random memory corruption.

OK, I compiled a kernel without support for READ_PLUS
and the test program magically succeeds.
https://www.spinics.net/lists/kernel/msg3789855.html

NFS Client With Linux 5.10 Adds "READ_PLUS" For Faster Performance
https://www.phoronix.com/scan.php?page=news_item&px=NFS-READ_PLUS-Linux-5.10

[1/3] NFS: Disable READ_PLUS by default
https://www.spinics.net/lists/linux-nfs/msg81213.html
https://patchwork.kernel.org/project/linux-nfs/patch/20201203201841.103294-2-Anna.Schumaker@Netapp.com/


Например, на Fedora добавили патч, отключающий READ_PLUS, и проблемы там нет.

[root@fedora64 boot]# grep READ_PLUS config-*
config-5.13.10-200.fc34.x86_64:# CONFIG_NFS_V4_2_READ_PLUS is not set
config-5.15.6-100.fc34.x86_64:# CONFIG_NFS_V4_2_READ_PLUS is not set
Comment 1 Anton V. Boyarshinov 2022-02-21 10:57:39 MSK
А на 5.15 проблема проявляется? Чтоб понимать -- везде ли отключать или только на 5.10
Comment 2 Sergey Bolshakov 2022-02-21 11:49:07 MSK
(In reply to Anton V. Boyarshinov from comment #1)
> А на 5.15 проблема проявляется? Чтоб понимать -- везде ли отключать или
> только на 5.10
в текущем 5.17-rc5:

config NFS_V4_2_READ_PLUS
        bool "NFS: Enable support for the NFSv4.2 READ_PLUS operation"
        depends on NFS_V4_2
        default n
        help
         This is intended for developers only. The READ_PLUS operation has
         been shown to have issues under specific conditions and should not
         be used in production.
Comment 3 Vitaly Lipatov 2022-02-21 12:09:56 MSK
(Ответ для Anton V. Boyarshinov на комментарий #1)
> А на 5.15 проблема проявляется? Чтоб понимать -- везде ли отключать или
> только на 5.10
А на 5.10 же нет ещё это ручки. Будет?
На 5.15 READ_PLUS должен быть выключен по умолчанию, как Сергей процитировал.
Comment 4 Anton V. Boyarshinov 2022-02-21 12:43:18 MSK
(Ответ для Vitaly Lipatov на комментарий #3)
> (Ответ для Anton V. Boyarshinov на комментарий #1)
> > А на 5.15 проблема проявляется? Чтоб понимать -- везде ли отключать или
> > только на 5.10
> А на 5.10 же нет ещё это ручки. Будет?
> На 5.15 READ_PLUS должен быть выключен по умолчанию, как Сергей процитировал.

Как нет ручки на 5.10, когда баг про это?
Будет выключено в следующих сборках.
Comment 5 Vitaly Lipatov 2022-02-23 16:14:19 MSK
В ожидании исправленного ядра на NFS-сервере в /etc/nfs.conf
вписал
vers4.2=n
и перезапустил сервис nfs.