Re: Hang in NFS client operation

From: Robert Watson <rwatson_at_FreeBSD.org>
Date: Wed, 1 Jun 2005 08:17:29 +0100 (BST)
On Wed, 1 Jun 2005, Jun Kuriyama wrote:

> Since 2005-04-09 (*), my (-current) box sometimes hang at NFS client 
> operation (usually CVS update from readonly NFS mounted repository. 
> Server is 5.3R).
>
> Is there something I can help debugging about this issue?

While it sounds like you've found the culprit, with NFS hangs it's always 
worth sitting down with a packet sniffer and making sure the wire protocol 
looks good.  Ethereal actually has quite a nice NFS RPC decoder.  What you 
want to do is attach Ethereal to the interface and make sure that the last 
lookup RPC in the sequence gets a valid looking reply.  This probably just 
means making sure there was a reply.

Robert N M Watson

>
> -----
> db> ps
>  pid   proc     uid  ppid  pgrp  flag   stat  wmesg    wchan  cmd
> 7778 c3b73e00  103  7776  7767 0004000 [SLPQ nfsreq 0xc3d87e80][SLP] cvs
> ...
> db> trace 7778
> Tracing pid 7778 tid 100124 td 0xc3b6b300
> sched_switch(c3b6b300,0,1) at sched_switch+0x14f
> mi_switch(1,0,c3b6b300,1,c3b6b300) at mi_switch+0x1ba
> sleepq_switch(c3d87e80) at sleepq_switch+0x133
> sleepq_wait(c3d87e80,0,c3bc5298,0,c3d87e80) at sleepq_wait+0xb
> msleep(c3d87e80,c0721a60,53,c06c28fc,0) at msleep+0x356
> nfs_reply(c3d87e80,0,f,0,c3b6b300) at nfs_reply+0x23c
> nfs_request(c4d69aa0,c3eb1200,3,c3b6b300,c3bf0d80) at nfs_request+0x3c1
> nfs_lookup(ecf93bd8) at nfs_lookup+0x2d8
> VOP_LOOKUP_APV(c06f8ba0,ecf93bd8) at VOP_LOOKUP_APV+0x38
> lookup(ecf93c68,ecf93c14,0,c3b6b300,ecf93c90) at lookup+0x431
> namei(ecf93c68,c3bf0d80,c3dd8e00,80c3080,0) at namei+0x396
> kern_access(c3b6b300,80c3080,0,4,ecf93d30) at kern_access+0x6a
> access(c3b6b300,ecf93d04,2,2d7,286) at access+0x15
> syscall(3b,bfbf003b,bfbf003b,80c3080,80de8c0) at syscall+0x2b3
> Xint0x80_syscall() at Xint0x80_syscall+0x1f
> --- syscall (33, FreeBSD ELF32, access), eip = 0x282e6bc7, esp = 0xbfbfe47c, ebp = 0xbfbfe498 ---
>
>
> -----
> (*) I tried to find actual commit by using binary search:
>    <http://lists.freebsd.org/pipermail/cvs-src/2005-April/044449.html>
>
>>  Modified files:
>>    sys/kern             vfs_lookup.c
>>  Log:
>>   - If we vrele() a dvp while the child is locked we can potentially
>>    deadlock
>>     when vrele() acquires the directory lock in the wrong order.  Fix
>>    this
>>     via the following changes:
>>  ...
>
>
> -- 
> Jun Kuriyama <kuriyama_at_imgsrc.co.jp> // IMG SRC, Inc.
>             <kuriyama_at_FreeBSD.org> // FreeBSD Project
> _______________________________________________
> freebsd-current_at_freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
>
Received on Wed Jun 01 2005 - 05:16:48 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:35 UTC