From: Wendy Cheng <wcheng@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH 2/2] Fix lockd panic
Date: Mon, 07 Jan 2008 00:53:54 -0500 [thread overview]
Message-ID: <4781BE72.7050404@redhat.com> (raw)
This small patch has not been changed since our last discussion:
http://www.opensubscriber.com/message/nfs at lists.sourceforge.net/6348912.html
To recap the issue, a client could ask for a posix lock that invokes:
>>> server calls nlm4svc_proc_lock() ->
>>> * server lookup file (f_count++)
>>> * server lock the file
>>> * server calls nlm_release_host
>>> * server calls nlm_release_file (f_count--)
>>> * server return to client with status 0
>>>
As part of the lookup file, the lock stays on vfs inode->i_flock list
with zero f_count. Any call into nlm_traverse_files() will BUG() in
locks_remove_flock() (fs/locks.c:2034) during fclose(), if that file
happens to be of no interest to that particular search. Since after
nlm_inspect_file(), the logic unconditionally checks for possible
removing of the file. As the file is not blocked, nothing to do with
shares, and f_count is zero, it will get removed from hash and fclose()
invoked with the posix lock hanging on i_flock list.
-- Wendy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: unlock_002.patch
Type: text/x-patch
Size: 939 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/cluster-devel/attachments/20080107/7dc95a17/attachment.bin>
WARNING: multiple messages have this Message-ID (diff)
From: Wendy Cheng <wcheng@redhat.com>
To: NFS list <linux-nfs@vger.kernel.org>
Cc: cluster-devel@redhat.com
Subject: [PATCH 2/2] Fix lockd panic
Date: Mon, 07 Jan 2008 00:53:54 -0500 [thread overview]
Message-ID: <4781BE72.7050404@redhat.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 1055 bytes --]
This small patch has not been changed since our last discussion:
http://www.opensubscriber.com/message/nfs@lists.sourceforge.net/6348912.html
To recap the issue, a client could ask for a posix lock that invokes:
>>> server calls nlm4svc_proc_lock() ->
>>> * server lookup file (f_count++)
>>> * server lock the file
>>> * server calls nlm_release_host
>>> * server calls nlm_release_file (f_count--)
>>> * server return to client with status 0
>>>
As part of the lookup file, the lock stays on vfs inode->i_flock list
with zero f_count. Any call into nlm_traverse_files() will BUG() in
locks_remove_flock() (fs/locks.c:2034) during fclose(), if that file
happens to be of no interest to that particular search. Since after
nlm_inspect_file(), the logic unconditionally checks for possible
removing of the file. As the file is not blocked, nothing to do with
shares, and f_count is zero, it will get removed from hash and fclose()
invoked with the posix lock hanging on i_flock list.
-- Wendy
[-- Attachment #2: unlock_002.patch --]
[-- Type: text/x-patch, Size: 939 bytes --]
This fixes the incorrect fclose call inside nlm_traverse_files() where
a posix lock could still be held by NFS client. Problem was found in a
kernel panic inside locks_remove_flock() (fs/locks.c:2034) as part of
the fclose call due to NFS-NLM locks still hanging on inode->i_flock list.
Signed-off-by: S. Wendy Cheng <wcheng@redhat.com>
svcsubs.c | 3 +--
1 files changed, 1 insertion(+), 2 deletions(-)
--- linux-nlm-1/fs/lockd/svcsubs.c 2008-01-06 18:23:20.000000000 -0500
+++ linux/fs/lockd/svcsubs.c 2008-01-06 18:24:12.000000000 -0500
@@ -332,8 +332,7 @@ nlm_traverse_files(struct nlm_host *host
mutex_lock(&nlm_file_mutex);
file->f_count--;
/* No more references to this file. Let go of it. */
- if (list_empty(&file->f_blocks) && !file->f_locks
- && !file->f_shares && !file->f_count) {
+ if (!nlm_file_inuse(file)) {
hlist_del(&file->f_list);
nlmsvc_ops->fclose(file->f_file);
kfree(file);
next reply other threads:[~2008-01-07 5:53 UTC|newest]
Thread overview: 117+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-07 5:53 Wendy Cheng [this message]
2008-01-07 5:53 ` [PATCH 2/2] Fix lockd panic Wendy Cheng
-- strict thread matches above, loose matches on Subject: below --
2008-01-07 5:39 [Cluster-devel] [PATCH 1/2] NLM failover unlock commands Wendy Cheng
2008-01-07 5:39 ` Wendy Cheng
[not found] ` <message from Wendy Cheng on Monday January 7>
2008-01-08 5:18 ` [Cluster-devel] " Neil Brown
2008-01-08 5:18 ` Neil Brown
2008-01-09 2:51 ` [Cluster-devel] " Wendy Cheng
2008-01-09 2:51 ` Wendy Cheng
2008-01-08 5:31 ` [Cluster-devel] Re: [PATCH 2/2] Fix lockd panic Neil Brown
2008-01-08 5:31 ` Neil Brown
2008-01-09 3:02 ` [Cluster-devel] " Wendy Cheng
2008-01-09 3:02 ` Wendy Cheng
2008-01-09 4:43 ` [Cluster-devel] " Wendy Cheng
2008-01-09 4:43 ` Wendy Cheng
2008-01-09 23:33 ` [Cluster-devel] " Wendy Cheng
2008-01-09 23:33 ` Wendy Cheng
2008-01-12 6:51 ` [Cluster-devel] " Wendy Cheng
2008-01-12 6:51 ` Wendy Cheng
2008-01-08 17:02 ` [Cluster-devel] Re: [PATCH 1/2] NLM failover unlock commands Christoph Hellwig
2008-01-08 17:02 ` Christoph Hellwig
2008-01-08 17:49 ` [Cluster-devel] " Christoph Hellwig
2008-01-08 17:49 ` Christoph Hellwig
2008-01-08 20:57 ` [Cluster-devel] " Wendy Cheng
2008-01-08 20:57 ` Wendy Cheng
2008-01-09 18:02 ` [Cluster-devel] " Christoph Hellwig
2008-01-09 18:02 ` Christoph Hellwig
2008-01-10 7:59 ` [Cluster-devel] " Christoph Hellwig
2008-01-10 7:59 ` Christoph Hellwig
2008-01-12 7:03 ` [Cluster-devel] " Wendy Cheng
2008-01-12 7:03 ` Wendy Cheng
2008-01-12 9:38 ` [Cluster-devel] " Christoph Hellwig
2008-01-12 9:38 ` Christoph Hellwig
2008-01-14 23:07 ` [Cluster-devel] " J. Bruce Fields
2008-01-14 23:07 ` J. Bruce Fields
[not found] ` <message from J. Bruce Fields on Monday January 14>
2008-01-14 23:31 ` [Cluster-devel] " Neil Brown
2008-01-14 23:31 ` Neil Brown
[not found] ` <18315.61638.14133.308991-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2008-01-15 16:38 ` Chuck Lever
2008-01-22 22:53 ` [Cluster-devel] " J. Bruce Fields
2008-01-22 22:53 ` J. Bruce Fields
[not found] ` <message from J. Bruce Fields on Tuesday January 22>
2008-01-24 4:02 ` [Cluster-devel] " Neil Brown
2008-01-24 4:02 ` Neil Brown
2008-01-15 16:14 ` [Cluster-devel] " Wendy Cheng
2008-01-15 16:14 ` Wendy Cheng
2008-01-15 16:30 ` [Cluster-devel] " J. Bruce Fields
2008-01-15 16:30 ` J. Bruce Fields
[not found] ` <message from Wendy Cheng on Saturday January 12>
2008-01-14 23:52 ` [Cluster-devel] " Neil Brown
2008-01-14 23:52 ` Neil Brown
2008-01-15 20:17 ` [Cluster-devel] " Wendy Cheng
2008-01-15 20:17 ` Wendy Cheng
[not found] ` <message from Wendy Cheng on Tuesday January 15>
2008-01-15 20:50 ` [Cluster-devel] " Neil Brown
2008-01-15 20:50 ` Neil Brown
2008-01-15 20:56 ` [Cluster-devel] " Wendy Cheng
2008-01-15 20:56 ` Wendy Cheng
2008-01-15 22:48 ` [Cluster-devel] " Wendy Cheng
2008-01-15 22:48 ` Wendy Cheng
2008-01-17 15:10 ` [Cluster-devel] " J. Bruce Fields
2008-01-17 15:10 ` J. Bruce Fields
2008-01-17 15:48 ` [Cluster-devel] " Wendy Cheng
2008-01-17 15:48 ` Wendy Cheng
2008-01-17 16:08 ` [Cluster-devel] " Wendy Cheng
2008-01-17 16:08 ` Wendy Cheng
2008-01-17 16:10 ` [Cluster-devel] " Wendy Cheng
2008-01-17 16:10 ` Wendy Cheng
2008-01-18 10:21 ` [Cluster-devel] " Frank van Maarseveen
2008-01-18 10:21 ` Frank van Maarseveen
2008-01-18 15:00 ` [Cluster-devel] " Wendy Cheng
2008-01-18 15:00 ` Wendy Cheng
2008-01-17 16:14 ` [Cluster-devel] " J. Bruce Fields
2008-01-17 16:14 ` J. Bruce Fields
2008-01-17 16:17 ` [Cluster-devel] " Wendy Cheng
2008-01-17 16:17 ` Wendy Cheng
2008-01-17 16:21 ` [Cluster-devel] " J. Bruce Fields
2008-01-17 16:21 ` J. Bruce Fields
2008-01-17 16:31 ` [Cluster-devel] " J. Bruce Fields
2008-01-17 16:31 ` J. Bruce Fields
2008-01-17 16:31 ` [Cluster-devel] " Wendy Cheng
2008-01-17 16:31 ` Wendy Cheng
2008-01-17 16:40 ` [Cluster-devel] " J. Bruce Fields
2008-01-17 16:40 ` J. Bruce Fields
2008-01-17 17:35 ` Frank Filz
2008-01-17 17:59 ` [Cluster-devel] " Wendy Cheng
2008-01-17 17:59 ` Wendy Cheng
2008-01-17 18:07 ` [Cluster-devel] " Wendy Cheng
2008-01-17 18:07 ` Wendy Cheng
2008-01-17 20:23 ` [Cluster-devel] " J. Bruce Fields
2008-01-17 20:23 ` J. Bruce Fields
2008-01-18 10:03 ` [Cluster-devel] " Frank van Maarseveen
2008-01-18 10:03 ` Frank van Maarseveen
2008-01-18 14:56 ` [Cluster-devel] " Wendy Cheng
2008-01-18 14:56 ` Wendy Cheng
2008-01-24 16:00 ` [Cluster-devel] " J. Bruce Fields
2008-01-24 16:00 ` J. Bruce Fields
2008-01-24 16:19 ` Peter Staubach
2008-01-24 16:39 ` [Cluster-devel] " J. Bruce Fields
2008-01-24 16:39 ` J. Bruce Fields
2008-01-24 19:45 ` [Cluster-devel] " Wendy Cheng
2008-01-24 19:45 ` Wendy Cheng
2008-01-24 20:19 ` [Cluster-devel] " J. Bruce Fields
2008-01-24 20:19 ` J. Bruce Fields
2008-01-24 21:06 ` [Cluster-devel] " Wendy Cheng
2008-01-24 21:06 ` Wendy Cheng
2008-01-24 21:40 ` [Cluster-devel] " J. Bruce Fields
2008-01-24 21:40 ` J. Bruce Fields
2008-01-24 21:49 ` [Cluster-devel] " Wendy Cheng
2008-01-24 21:49 ` Wendy Cheng
2008-01-28 3:46 ` [Cluster-devel] " Felix Blyakher
2008-01-28 3:46 ` Felix Blyakher
2008-01-28 15:56 ` [Cluster-devel] " Wendy Cheng
2008-01-28 15:56 ` Wendy Cheng
2008-01-28 17:06 ` [Cluster-devel] " Felix Blyakher
2008-01-28 17:06 ` Felix Blyakher
2008-01-16 4:19 ` Neil Brown
2008-01-16 4:19 ` Neil Brown
2008-01-09 3:49 ` [Cluster-devel] " Wendy Cheng
2008-01-09 3:49 ` Wendy Cheng
2008-01-09 16:13 ` [Cluster-devel] " J. Bruce Fields
2008-01-09 16:13 ` J. Bruce Fields
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4781BE72.7050404@redhat.com \
--to=wcheng@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.