[OpenAFS] Re: Debugging opportunity (time-sensitive)

Andrew Deason adeason@sinenomine.net
Wed, 18 May 2011 12:25:01 -0500


This is a multi-part message in MIME format.

--Multipart=_Wed__18_May_2011_12_25_01_-0500_ePG7UFEbB/tBAWzK
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

On Wed, 18 May 2011 11:42:45 -0400
Jeff Blaine <jblaine@kickflop.net> wrote:

>    0      -> afs_GetDCache
>    0        -> afs_MemGetDSlot
>    0          -> Afs_Lock_ReleaseR
>    0            -> afs_osi_Wakeup
>    0              -> afs_getevent
>    0              <- afs_getevent
>    0            <- afs_osi_Wakeup
>    0          <- Afs_Lock_ReleaseR
>    0        <- afs_MemGetDSlot
>    0        -> afs_osi_Sleep
>    0          -> afs_getevent
>    0          <- afs_getevent

So, waiting on tdc->lock, I think?

Try the same thing with the attached D script; it may say who's holding
it.

-- 
Andrew Deason
adeason@sinenomine.net

--Multipart=_Wed__18_May_2011_12_25_01_-0500_ePG7UFEbB/tBAWzK
Content-Type: text/x-dsrc;
 name="traceafs.d"
Content-Disposition: attachment;
 filename="traceafs.d"
Content-Transfer-Encoding: 7bit

#pragma D option flowindent

fbt:afs::entry /pid == $target/ {}
fbt:afs::return /pid == $target/ {}

fbt:afs:afs_GetDCache:entry /pid == $target/ {
	self->traceme = 1;
}
fbt:afs:afs_GetDCache:return /self->traceme/ {
	self->traceme = 0;
}

self unsigned *p;

fbt:afs:afs_osi_Sleep:entry /pid == $target && self->traceme/ {
	self->p = (unsigned*)(arg0 & 0xfffffffffffffff8);
	printf("event %p = %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u\n",
		(void*)arg0
		,self->p[0]
		,self->p[1]
		,self->p[2]
		,self->p[3]
		,self->p[4]
		,self->p[5]
		,self->p[6]
		,self->p[7]
		,self->p[9]
		,self->p[10]
		,self->p[11]
	);
	self->p = 0;
}

--Multipart=_Wed__18_May_2011_12_25_01_-0500_ePG7UFEbB/tBAWzK--