getdirtybuf: interlock not locked but should be

From: Garrett Wollman <wollman_at_khavrinen.lcs.mit.edu>
Date: Wed, 1 Oct 2003 00:36:33 -0400 (EDT)
I'm working on getting the AFS client to work under FreeBSD.  I just
compiled a -current kernel with DEBUG_VFS_LOCKS, and before I could
even load the AFS module I had the system stop with the following
locking assertion:

getdirtybuf: 0xc2678000 interlock is not locked but should be

Backtrace looks like:

getdirtybuf(de17cbb4, 0, 1, c7732ba0, 1) +0xee
flush_deplist(c268ad4c, 1, de17cbdc, de17cbe0, 0) +0x43
flush_inodedep_deps(c2670000,1ab,ffffffff,c26ed000,124) +0xa3
softdep_sync_metadata(de17cca4, 0, c037b672, 124, 0) +0x87
ffs_fsync(de17cca4, c03714ea, c0373416, ad8, 0) +0x3b9
fsync(c25d7850, de17cd10, c038276b, 3ec, 1) +0x1d4
syscall() ...

One vnode is locked:
0xc26ed000: tag ufs, type VREG, usecount 1, writecount 1, refcount 1,
flags (VV_OBJBUF), lock type ufs: EXCL (count 1) by thread 0xc25d7850
	ino 427, on dev ad0s1a (4, 13)

This is repeated four times with the same vnode.  Obviously, it would
help to have a solution to this problem so that I can debug what I'm
really interested in rather than worrying about UFS.

-GAWollman
Received on Tue Sep 30 2003 - 19:36:38 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:24 UTC