[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#945023: Backport 'ipv4: Return -ENETUNREACH if we can't create route but saddr is valid'



Source: linux
Version: 4.19.67-2+deb10u1
Severity: normal
Tags: upstream patch fixed-upstream
Control: found -1 4.9.189-3+deb9u1
Control: found -1 4.19.67-2+deb10u2
Control: found -1 4.9.189-3+deb9u2

The patch 'ipv4: Return -ENETUNREACH if we can't create route but saddr is valid' was added in all 4.x stable kernels, e.g., 4.19.81. This patch fixes a nasty stability issue of NFS4. If the network goes away, active file operations will fail on the client with EINVAL instead of continuing when the server comes back.

The following is an example are for reproducing this error (client 'muster', server 'sample'):

# Mounted file system
muster[0]:/mnt# mount | grep /mnt
sample:/local/plain on /mnt type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=x.x.x.x,local_lock=none,addr=y.y.y.y)

# Script to simulate a network outage
muster[130]:/mnt# cat /root/net.sh
ifdown enp0s31f6
sleep 300
ifup enp0s31f6

# Start all I/O processes and simulate a network interruption
muster[0]:/mnt# for i in `seq 1 100`; do dd if=/dev/zero of=$i bs=1M count=25 oflag=direct & done ; sleep 5 ; nohup sh /root/net.sh
...
26214400 bytes (26 MB) copied, 3.93894 s, 6.7 MB/s
25+0 records in
25+0 records out
26214400 bytes (26 MB) copied, 3.90155 s, 6.7 MB/s
25+0 records in
25+0 records out
26214400 bytes (26 MB) copied, 3.92334 s, 6.7 MB/s
dd: dd: dd: error writing ‘16’error writing ‘32’error writing ‘25’: Invalid argument: Invalid argument: Invalid argument...
21+0 records in
20+0 records out
10+0 records in
9+0 records out
19+0 records in
18+0 records out
20971520 bytes (21 MB) copied18874368 bytes (19 MB) copied9437184 bytes (9.4 MB) copied, 306.087 s, 68.5 kB/s
, 304.42 s, 31.0 kB/s
, 305.808 s, 61.7 kB/s
25+0 records in
25+0 records out
26214400 bytes (26 MB) copied, 306.792 s, 85.4 kB/s
25+0 records in
25+0 records out
26214400 bytes (26 MB) copied, 306.805 s, 85.4 kB/s
25+0 records in
25+0 records out
26214400 bytes (26 MB) copied, 306.665 s, 85.5 kB/s
...

muster[0]:/mnt# dmesg  | tail -5
[  667.098917] nfs: server sample not responding, still trying
[  667.098929] nfs: server sample not responding, still trying
[  695.258324] nfs: RPC call returned error 22
[  695.258333] nfs: RPC call returned error 22
[  695.258350] nfs: RPC call returned error 22


Please incorporate this single patch in all 4.x kernels of the currently supported Debian releases.


Reply to: