提交 7a1fa065 编写于 作者: N Neil Brown 提交者: Linus Torvalds

Correctly close old nfsd/lockd sockets.

Commit aaf68cfb added a bias
to sk_inuse, so this test for an unused socket now fails.  So no
sockets get closed because they are old (they might get closed
if the client closed them).

This bug has existed since 2.6.21-rc1.

Thanks to Wolfgang Walter for finding and reporting the bug.

Cc: Wolfgang Walter <wolfgang.walter@studentenwerk.mhn.de>
Signed-off-by: NNeil Brown <neilb@suse.de>
Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 2123a09f
...@@ -1592,7 +1592,7 @@ svc_age_temp_sockets(unsigned long closure) ...@@ -1592,7 +1592,7 @@ svc_age_temp_sockets(unsigned long closure)
if (!test_and_set_bit(SK_OLD, &svsk->sk_flags)) if (!test_and_set_bit(SK_OLD, &svsk->sk_flags))
continue; continue;
if (atomic_read(&svsk->sk_inuse) || test_bit(SK_BUSY, &svsk->sk_flags)) if (atomic_read(&svsk->sk_inuse) > 1 || test_bit(SK_BUSY, &svsk->sk_flags))
continue; continue;
atomic_inc(&svsk->sk_inuse); atomic_inc(&svsk->sk_inuse);
list_move(le, &to_be_aged); list_move(le, &to_be_aged);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册