diff options
author | rwatson <rwatson@FreeBSD.org> | 2009-03-24 17:14:34 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2009-03-24 17:14:34 +0000 |
commit | f0f3719742f04a2cccfd5eec65ae3d3c71f9e45a (patch) | |
tree | 49f97de2d87c24e7638d18faec23beda8c9a2320 /sys/sys/dtrace_bsd.h | |
parent | 55b10f0d2872c423e3891750a4995bc7e6bfdc79 (diff) | |
download | FreeBSD-src-f0f3719742f04a2cccfd5eec65ae3d3c71f9e45a.zip FreeBSD-src-f0f3719742f04a2cccfd5eec65ae3d3c71f9e45a.tar.gz |
Add DTrace probes to the NFS access and attribute caches. Access cache
events are:
nfsclient:accesscache:flush:done
nfsclient:accesscache:get:hit
nfsclient:accesscache:get:miss
nfsclient:accesscache:load:done
They pass the vnode, uid, and requested or loaded access mode (if any);
the load event may also report a load error if the RPC fails.
The attribute cache events are:
nfsclient:attrcache:flush:done
nfsclient:attrcache:get:hit
nfsclient:attrcache:get:miss
nfsclient:attrcache:load:done
They pass the vnode, optionally the vattr if one is present (hit or load),
and in the case of a load event, also a possible RPC error.
MFC after: 1 month
Sponsored by: Google, Inc.
Diffstat (limited to 'sys/sys/dtrace_bsd.h')
-rw-r--r-- | sys/sys/dtrace_bsd.h | 50 |
1 files changed, 45 insertions, 5 deletions
diff --git a/sys/sys/dtrace_bsd.h b/sys/sys/dtrace_bsd.h index 737a47a..f323284 100644 --- a/sys/sys/dtrace_bsd.h +++ b/sys/sys/dtrace_bsd.h @@ -35,6 +35,8 @@ struct mbuf; struct trapframe; struct thread; +struct vattr; +struct vnode; /* * Cyclic clock function type definition used to hook the cyclic @@ -94,14 +96,52 @@ typedef void (*dtrace_malloc_probe_func_t)(u_int32_t, uintptr_t arg0, extern dtrace_malloc_probe_func_t dtrace_malloc_probe; -/* The dtnfsclient provider hooks into the NFS[23] client. */ -typedef void (*dtrace_nfsclient_nfs23_start_probe_func_t)(u_int32_t, +/* dtnfsclient NFSv3 access cache provider hooks. */ +typedef void (*dtrace_nfsclient_accesscache_flush_probe_func_t)(uint32_t, + struct vnode *); +extern dtrace_nfsclient_accesscache_flush_probe_func_t + dtrace_nfsclient_accesscache_flush_done_probe; + +typedef void (*dtrace_nfsclient_accesscache_get_probe_func_t)(uint32_t, + struct vnode *, uid_t, uint32_t); +extern dtrace_nfsclient_accesscache_get_probe_func_t + dtrace_nfsclient_accesscache_get_hit_probe, + dtrace_nfsclient_accesscache_get_miss_probe; + +typedef void (*dtrace_nfsclient_accesscache_load_probe_func_t)(uint32_t, + struct vnode *, uid_t, uint32_t, int); +extern dtrace_nfsclient_accesscache_load_probe_func_t + dtrace_nfsclient_accesscache_load_done_probe; + +/* dtnfsclient NFSv[23] attribute cache provider hooks. */ +typedef void (*dtrace_nfsclient_attrcache_flush_probe_func_t)(uint32_t, + struct vnode *); +extern dtrace_nfsclient_attrcache_flush_probe_func_t + dtrace_nfsclient_attrcache_flush_done_probe; + +typedef void (*dtrace_nfsclient_attrcache_get_hit_probe_func_t)(uint32_t, + struct vnode *, struct vattr *); +extern dtrace_nfsclient_attrcache_get_hit_probe_func_t + dtrace_nfsclient_attrcache_get_hit_probe; + +typedef void (*dtrace_nfsclient_attrcache_get_miss_probe_func_t)(uint32_t, + struct vnode *); +extern dtrace_nfsclient_attrcache_get_miss_probe_func_t + dtrace_nfsclient_attrcache_get_miss_probe; + +typedef void (*dtrace_nfsclient_attrcache_load_probe_func_t)(uint32_t, + struct vnode *, struct vattr *, int); +extern dtrace_nfsclient_attrcache_load_probe_func_t + dtrace_nfsclient_attrcache_load_done_probe; + +/* dtnfsclient NFSv[23] RPC provider hooks. */ +typedef void (*dtrace_nfsclient_nfs23_start_probe_func_t)(uint32_t, struct vnode *, struct mbuf *, struct ucred *, int); -typedef void (*dtrace_nfsclient_nfs23_done_probe_func_t)(u_int32_t, - struct vnode *, struct mbuf *, struct ucred *, int, int); - extern dtrace_nfsclient_nfs23_start_probe_func_t dtrace_nfsclient_nfs23_start_probe; + +typedef void (*dtrace_nfsclient_nfs23_done_probe_func_t)(uint32_t, + struct vnode *, struct mbuf *, struct ucred *, int, int); extern dtrace_nfsclient_nfs23_done_probe_func_t dtrace_nfsclient_nfs23_done_probe; |