cvs commit: src/sys/kern vfs_subr.c src/sys/nfsclient nfs_bio.c src/sys/fs/smbfs smbfs_io.c src/sys/fs/nwfs nwfs_io.c

Stephan Uphoff ups at freebsd.org
Thu May 25 10:20:05 PDT 2006


Ken Smith wrote:
> On Thu, 2006-05-25 at 01:00 +0000, Stephan Uphoff wrote:
>   
>> ups         2006-05-25 01:00:36 UTC
>>
>>   FreeBSD src repository
>>
>>   Modified files:
>>     sys/kern             vfs_subr.c 
>>     sys/nfsclient        nfs_bio.c 
>>     sys/fs/smbfs         smbfs_io.c 
>>     sys/fs/nwfs          nwfs_io.c 
>>   Log:
>>   Do not set B_NOCACHE on buffers when releasing them in flushbuflist().
>>   If B_NOCACHE is set the pages of vm backed buffers will be invalidated.
>>   However clean buffers can be backed by dirty VM pages so invalidating them
>>   can lead to data loss.
>>   Add support for flush dirty page in the data invalidation function
>>   of some network file systems.
>>   
>>   This fixes data losses during vnode recycling (and other code paths
>>   using invalbuf(*,V_SAVE,*,*)) for data written using an mmaped file.
>>   
>>   Collaborative effort by: jhb@,mohans@,peter@,ps@,ups@
>>   Reviewed by:    tegge@
>>   MFC after:      7 days
>>   
>>   Revision  Changes    Path
>>   1.43      +4 -0      src/sys/fs/nwfs/nwfs_io.c
>>   1.35      +4 -0      src/sys/fs/smbfs/smbfs_io.c
>>   1.673     +1 -1      src/sys/kern/vfs_subr.c
>>   1.157     +11 -0     src/sys/nfsclient/nfs_bio.c
>>     
>
> I'm just guessing but I think this is what's causing sledge (amd64
> reference machine in the cluster) to panic whenever someone tries to log
> in to it.  Home directories come from the NetApp.  It seems to do other
> NFS stuff (e.g. it's able to get to the SSH keys which also reside on
> the NetApp) but something about logging in causes this:
>
> panic: mutex vm object not owned at ../../../vm/vm_object.c:695
> cpuid = 0
> KDB: stack backtrace:
> kdb_backtrace() at kdb_backtrace+0x37
> panic() at panic+0x1d1
> _mtx_assert() at _mtx_assert+0x78
> vm_object_page_clean() at vm_object_page_clean+0x3e
> nfs_vinvalbuf() at nfs_vinvalbuf+0xc2
> nfs_bioread() at nfs_bioread+0x43b
> nfs_read() at nfs_read+0x33
> VOP_READ_APV() at VOP_READ_APV+0xb1
> vn_read() at vn_read+0x218
> dofileread() at dofileread+0x9e
> kern_readv() at kern_readv+0x4f
> read() at read+0x4b
> syscall() at syscall+0x350
> Xfast_syscall() at Xfast_syscall+0xa8
> --- syscall (3, FreeBSD ELF64, read), rip = 0x8009de68c, rsp =
> 0x7fffffff2798, rbp = 0x2000 ---
> KDB: enter: panic
> [thread pid 465 tid 100056 ]
> Stopped at      kdb_enter+0x31: leave
> db>
Ooopppsss!

Thanks for the trace.
I just checked in a fix.



More information about the cvs-src mailing list