1 |
On Sun, 08 Dec 2013 16:13:26 -0500 |
2 |
Tanstaafl <tanstaafl@×××××××××××.org> wrote: |
3 |
|
4 |
> On 2013-10-26 6:19 PM, Daniel Frey <djqfrey@×××××.com> wrote: |
5 |
> > Just a note to other NFS server users - |
6 |
> > |
7 |
> > There's a kernel bug that can cause unmounting an NFS share to |
8 |
> > segfault (and not actually unmount anything.) |
9 |
> > |
10 |
> > I had in in the kernel 3.10 version, perhaps even before that as I |
11 |
> > don't update the kernel on my mythtv backend server that often. |
12 |
> > |
13 |
> > It hangs the shutdown process with an oops and it will require |
14 |
> > physical manual intervention to shut the machine down. |
15 |
> > |
16 |
> > If you upgrade to 3.11.5 or greater the problem goes away. |
17 |
> > |
18 |
> > I've been banging my head against the wall with this for over a |
19 |
> > week and *finally* found a resolution after going through a lot of |
20 |
> > NFS searches via Google. |
21 |
> |
22 |
> So... is this fixed in the stable 3.10 series (ie, 3.10.7 or 3.10.17)? |
23 |
|
24 |
TL;DR: One of both NFS fixes from 3.11.5 is fixed since v3.10.16, the |
25 |
other one is fixed since v3.11.5; porting the other one back does not |
26 |
appear easy, because different code is present (or an alternative fix). |
27 |
|
28 |
== Which commits? == |
29 |
|
30 |
http://thread.gmane.org/gmane.linux.kernel/1577607 mentions: |
31 |
|
32 |
1. NFSv4.1: nfs4_fl_prepare_ds - fix bugs when the connect attempt fails |
33 |
2. nfsd4: fix leak of inode reference on delegation failure |
34 |
|
35 |
== Are they present in v3.10.17? == |
36 |
|
37 |
For (1) we see that |
38 |
http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/log/?id=v3.10.17&qt=grep&q=nfs4_fl_prepare_ds |
39 |
does show the commit. |
40 |
|
41 |
For (2) we see that |
42 |
http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/log/?id=v3.10.17&qt=grep&q=fix%20leak%20of%20inode |
43 |
does not show the commit. |
44 |
|
45 |
So, one of both commits is fixed in 3.10.17, the other is not. |
46 |
|
47 |
== Which versions contain these commits? == |
48 |
|
49 |
We can find all relevant commits IDs by searching for the commit message |
50 |
in the last release of each branch; then we just enumerate all tags, |
51 |
which gives us the versions where the commit is present. |
52 |
|
53 |
Checking the upstream commits yields: |
54 |
|
55 |
$ git tag --contains 52b26a3e1bb3e065c32b3febdac1e1f117d88e15 # (1) |
56 |
v3.12 |
57 |
v3.12-rc4 |
58 |
v3.12-rc5 |
59 |
v3.12-rc6 |
60 |
v3.12-rc7 |
61 |
v3.12.1 |
62 |
v3.12.2 |
63 |
v3.12.3 |
64 |
v3.12.4 |
65 |
v3.13-rc1 |
66 |
v3.13-rc2 |
67 |
v3.13-rc3 |
68 |
$ git tag --contains bf7bd3e98be5c74813bee6ad496139fb0a011b3b # (2) |
69 |
v3.12 |
70 |
v3.12-rc1 |
71 |
v3.12-rc2 |
72 |
v3.12-rc3 |
73 |
v3.12-rc4 |
74 |
v3.12-rc5 |
75 |
v3.12-rc6 |
76 |
v3.12-rc7 |
77 |
v3.12.1 |
78 |
v3.12.2 |
79 |
v3.12.3 |
80 |
v3.12.4 |
81 |
v3.13-rc1 |
82 |
v3.13-rc2 |
83 |
v3.13-rc3 |
84 |
|
85 |
Checking the ported back 3.11 commits yields: |
86 |
|
87 |
$ git tag --contains 3b12032f89e27f139828bad8120149b1584bc898 # (1) |
88 |
v3.11.5 |
89 |
v3.11.6 |
90 |
v3.11.7 |
91 |
v3.11.8 |
92 |
v3.11.9 |
93 |
v3.11.10 |
94 |
$ git tag --contains ba3460519e393d0f212403ae3535305f423d84ed # (2) |
95 |
v3.11.5 |
96 |
v3.11.6 |
97 |
v3.11.7 |
98 |
v3.11.8 |
99 |
v3.11.9 |
100 |
v3.11.10 |
101 |
|
102 |
Checking the ported back 3.10 commit yields: |
103 |
|
104 |
$ git tag --contains 28f7ae257183e8064119db486190d2229caae369 # (1) |
105 |
v3.10.16 |
106 |
v3.10.17 |
107 |
v3.10.18 |
108 |
v3.10.19 |
109 |
v3.10.20 |
110 |
v3.10.21 |
111 |
v3.10.22 |
112 |
v3.10.23 |
113 |
|
114 |
This summarizes all versions where these two commits are available. |
115 |
|
116 |
== Only one of both is available in v3.10.17, can I apply the other? == |
117 |
|
118 |
It appears that (2) can't be applied to v3.10 without porting it back; |
119 |
or maybe it has already applied, but in a quite different way. |
120 |
|
121 |
== Which versions contain the bad commit(s)? Which one are affected? == |
122 |
|
123 |
A list of all versions that contain the bad commit of (2) are: |
124 |
|
125 |
$ git tag --contains 68a3396178e6688ad7367202cdf0af8ed03c8727 | tr |
126 |
'\n' ' ' |
127 |
|
128 |
v3.10 v3.10-rc1 v3.10-rc2 v3.10-rc3 v3.10-rc4 v3.10-rc5 v3.10-rc6 |
129 |
v3.10-rc7 v3.10.1 v3.10.10 v3.10.11 v3.10.12 v3.10.13 v3.10.14 v3.10.15 |
130 |
v3.10.16 v3.10.17 v3.10.18 v3.10.19 v3.10.2 v3.10.20 v3.10.21 v3.10.22 |
131 |
v3.10.23 v3.10.3 v3.10.4 v3.10.5 v3.10.6 v3.10.7 v3.10.8 v3.10.9 v3.11 |
132 |
v3.11-rc1 v3.11-rc2 v3.11-rc3 v3.11-rc4 v3.11-rc5 v3.11-rc6 v3.11-rc7 |
133 |
v3.11.1 v3.11.10 v3.11.2 v3.11.3 v3.11.4 v3.11.5 v3.11.6 v3.11.7 |
134 |
v3.11.8 v3.11.9 v3.12 v3.12-rc1 v3.12-rc2 v3.12-rc3 v3.12-rc4 v3.12-rc5 |
135 |
v3.12-rc6 v3.12-rc7 v3.12.1 v3.12.2 v3.12.3 v3.12.4 v3.13-rc1 v3.13-rc2 |
136 |
v3.13-rc3 |
137 |
|
138 |
Excluding wherever it is fixed, only v3.10-rc1 - v3.10.23 are affected. |
139 |
|
140 |
As the first commit doesn't mention where it regressed, I cannot check |
141 |
in which versions that bad commit is present for (1); though it is |
142 |
definitely limited to versions lower than v3.10.16 as evidenced earlier. |
143 |
|
144 |
-- |
145 |
With kind regards, |
146 |
|
147 |
Tom Wijsman (TomWij) |
148 |
Gentoo Developer |
149 |
|
150 |
E-mail address : TomWij@g.o |
151 |
GPG Public Key : 6D34E57D |
152 |
GPG Fingerprint : C165 AF18 AB4C 400B C3D2 ABF0 95B2 1FCD 6D34 E57D |