linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* problem with kthread changes that went into cifs_demultiplex_thread
@ 2008-06-10 15:41 Steve French
  2008-06-10 17:24 ` Jeff Layton
  0 siblings, 1 reply; 3+ messages in thread
From: Steve French @ 2008-06-10 15:41 UTC (permalink / raw)
  To: Jeff Layton; +Cc: linux-fsdevel

In working on the smb2 client implementation, I noticed that there is
a problem with the revised kthread logic which takes down cifsd
(cifs_demultiplex_thread) on umount or on abnormal socket termination
during protocol negotiation.    I noticed this while looking at SMB2
since the Samba 4 SMB2 server was not handling the new SMB2 Negotiate
protocol request (and unlike Windows Server 2008) and was closing the
tcp session immediately after receiving the negprot request from the
client.  An unexpected error on negprot which causes the TCP session
to close will cause cifsd to exit, but now  this blocks forever at
kthread_should_stop just after the main loop in
cifs_demultiplex_thread.    The task doing mount is blocked in
wait_event on the response_q but will never be woken up by cifsd (even
though it would timeout if some one did wake it up once the 15 second
timeout was expired).   umount will never call kthread_stop because
mount never succeeded - we do not have a tree connection yet (so tcon
is null and we can't get to tcon->ses->server) and the failed mount
won't call kthread_stop because it is stuck in wait_event with no one
to wake up response_q.

Adding a call to wake_up_all(&server->response_q) right after we set
server->tcpStatus = CifsExiting at the end of the loop in
cifs_demultiplex_thread but before we wait for kthread_stop works in
my testing.

-- 
Thanks,

Steve

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-06-10 21:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-10 15:41 problem with kthread changes that went into cifs_demultiplex_thread Steve French
2008-06-10 17:24 ` Jeff Layton
2008-06-10 21:40   ` Steve French

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).