Bug 95561
Summary: | nfsv4.1-svc hangs and causes an unclean suspend | ||
---|---|---|---|
Product: | File System | Reporter: | Bjoern Franke (bjo) |
Component: | NFS | Assignee: | Trond Myklebust (trondmy) |
Status: | NEW --- | ||
Severity: | normal | CC: | bfields, daniel, eric, fche, linux, matti.niemenmaa+kernelbugs, mikkeloscar, mjevans1983, szg00000 |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | >=3.19.2, >=3.14.36 | Subsystem: | |
Regression: | No | Bisected commit-id: |
Description
Bjoern Franke
2015-03-25 11:30:54 UTC
Also affected: 3.19.3, 3.14.36 / 3.14.37. According to https://forum.manjaro.org/index.php?topic=21508.0 downgrading nfs-utils to 1.3.1-1 fixes the problem. I too have encountered this issue, but noticed it not when attempting a suspend, but merely by the fact that my load averages at idle are now 1.00 1.00 1.00. I also noticed nfsv4.1-svc stuck in D state: PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND 2267 ? D 0:00 0 0 0 0 0.0 [nfsv4.1-svc] It does indeed seem to be related to the aforementioned commit. I reverted that patch against 3.19.3 and it resolved the issue. It's still present in 4.0-rc6. I can also confirm that downgrading nfs-utils to 1.3.1 (from 1.3.2) also resolves the issue. As this issue might be causing my issues suspending/hibernating while NFS mounts exist I'm trying to understand the logic of the suspected commit. Is it valid to call schedule_timeout (with any value) before calling finish_wait; which is what I presume is closing the critical section? Previously bjo@nord-west.org 2015-03-25 11:30:54 UTC referenced: http://kernel.suse.com/cgit/kernel/commit/?h=stable&id=0c0f2544c2355899dcf62821ed0b230b60b79c22 This patch is trying to convert the logic from incorrectly flagged interruptable operations to an un-interruptable logic, therefore I cannot assume that the ordering of operations it modifies is also valid. } else { spin_unlock_bh(&serv->sv_cb_lock); - schedule(); + /* schedule_timeout to game the hung task watchdog */ + schedule_timeout(60 * HZ); + finish_wait(&serv->sv_cb_waitq, &wq); } - finish_wait(&serv->sv_cb_waitq, &wq); Setting the value Defaultvers=4.0 in /etc/nfsmount.conf as recommended here: https://bugs.archlinux.org/task/44323#comment134552 also solves this problem for me (with nfs-utils 1.3.2). (In reply to Mikkel Oscar Lyderik from comment #5) > Setting the value Defaultvers=4.0 in /etc/nfsmount.conf as recommended here: > https://bugs.archlinux.org/task/44323#comment134552 also solves this problem > for me (with nfs-utils 1.3.2). That is a *workaround* not a solution. Was this fixed by 5d05e54af3cd "nfs: fix high load average due to callback thread sleeping" (went into 4.1-rc1)? |