|
Server : Apache/2.2.2 (Fedora) System : Linux App1.pathumtani.go.th 2.6.20-1.2320.fc5smp #1 SMP Tue Jun 12 19:40:16 EDT 2007 i686 User : apache ( 48) PHP Version : 5.2.9 Disable Function : NONE Directory : /usr/share/systemtap/tapset/LKET/ |
Upload File : |
%{
#include <linux/sunrpc/svc.h>
#include <linux/nfsd/nfsfh.h>
%}
%{
void decode_fh(struct knfsd_fh *fh,__u64 * i_ino)
{
int i;
for(i = 0;i < 3;i++)
{
i_ino[i] = fh->fh_base.fh_pad[2*i];
i_ino[i] = i_ino[i] << 32 |fh->fh_base.fh_pad[2*i + 1 ];
}
}
%}
probe never
{
printf("%d",GROUP_NFSD)
}
probe addevent.nfsd
= addevent.nfsd.entry,
addevent.nfsd.return
{}
probe addevent.nfsd.entry
= addevent.nfsd.op.entry,
addevent.nfsd.proc.entry
{}
probe addevent.nfsd.return
= addevent.nfsd.op.return,
addevent.nfsd.proc.return
{}
probe addevent.nfsd.op
= addevent.nfsd.op.entry,
addevent.nfsd.op.return
{}
probe addevent.nfsd.op.entry =
addevent.nfsd.dispatch.entry,
addevent.nfsd.open.entry,
addevent.nfsd.read.entry,
addevent.nfsd.write.entry,
addevent.nfsd.lookup.entry,
addevent.nfsd.commit.entry,
addevent.nfsd.create.entry,
addevent.nfsd.createv3.entry,
addevent.nfsd.unlink.entry,
addevent.nfsd.rename.entry,
addevent.nfsd.close.entry
{}
probe addevent.nfsd.op.return =
addevent.nfsd.dispatch.return,
addevent.nfsd.open.return,
addevent.nfsd.read.return,
addevent.nfsd.write.return,
addevent.nfsd.lookup.return,
addevent.nfsd.commit.return,
addevent.nfsd.create.return,
addevent.nfsd.createv3.return,
addevent.nfsd.unlink.return,
addevent.nfsd.rename.return,
addevent.nfsd.close.return
{}
probe addevent.nfsd.dispatch.entry
+= _addevent.nfsd.dispatch.entry
{
update_record()
}
probe _addevent.nfsd.dispatch.entry
= nfsd.dispatch
{
log_nfsd_dispatch(client_ip,proto,version,xid,prog,proc)
}
function log_nfsd_dispatch(client_ip:long,proto:long,version:long,xid:long,
prog:long,proc:long)
%{
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_DISPATCH_ENTRY,"%1b%1b%4b%4b%4b",
THIS->proto,THIS->version,THIS->xid,THIS->proc,THIS->client_ip);
%}
probe addevent.nfsd.dispatch.return
+= _addevent.nfs.dispatch.return
{
update_record()
}
probe _addevent.nfs.dispatch.return
= nfsd.dispatch.return
{
log_nfs_return(HOOKID_NFSD_DISPATCH_RETURN,$return)
}
probe addevent.nfsd.lookup.entry
+= _addevent.nfsd.lookup.entry
{
update_record()
}
probe _addevent.nfsd.lookup.entry
= nfsd.lookup
{
log_nfsd_lookup($fhp,filename)
}
function log_nfsd_lookup(fhp:long,filename:string)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fhp);
__u64 i_ino[3];
decode_fh(&fhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_LOOKUP_ENTRY,"%1b%8b%8b%8b%0s",
(_FMT_)fhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],THIS->filename);
%}
probe addevent.nfsd.lookup.return
+= _addevent.nfsd.lookup.return
{
update_record()
}
probe _addevent.nfsd.lookup.return
= nfsd.lookup.return
{
log_nfs_return(HOOKID_NFSD_LOOKUP_RETURN,$return)
}
probe addevent.nfsd.create.entry
+= _addevent.nfsd.create.entry
{
update_record()
}
probe _addevent.nfsd.create.entry
= nfsd.create
{
log_nfsd_create($fhp,filename,type,iap_valid,iap_mode)
}
function log_nfsd_create(fhp:long,filename:string,type:long,
iap_valid:long,iap_mode:long)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fhp);
__u64 i_ino[3];
decode_fh(&fhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_CREATE_ENTRY,"%1b%8b%8b%8b%0s%4b%2b%4b",
(_FMT_)fhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],THIS->filename,
THIS->type,THIS->iap_valid,THIS->iap_mode);
%}
probe addevent.nfsd.create.return
+= _addevent.nfsd.create.return
{
update_record()
}
probe _addevent.nfsd.create.return
= nfsd.create.return
{
log_nfs_return(HOOKID_NFSD_CREATE_RETURN,$return)
}
probe addevent.nfsd.createv3.entry
+= _addevent.nfsd.createv3.entry
{
update_record()
}
probe _addevent.nfsd.createv3.entry
= nfsd.createv3
{
log_nfsd_createv3($fhp,filename,createmode,iap_valid,iap_mode)
}
function log_nfsd_createv3(fhp:long,filename:string,createmode:long,
iap_valid:long,iap_mode:long)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fhp);
__u64 i_ino[3];
decode_fh(&fhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_CREATEV3_ENTRY,"%1b%8b%8b%8b%0s%1b%2b%4b",
(_FMT_)fhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],THIS->filename,
THIS->createmode,THIS->iap_valid,THIS->iap_mode);
%}
probe addevent.nfsd.createv3.return
+= _addevent.nfsd.createv3.return
{
update_record()
}
probe _addevent.nfsd.createv3.return
= nfsd.createv3.return
{
log_nfs_return(HOOKID_NFSD_CREATEV3_RETURN,$return)
}
probe addevent.nfsd.unlink.entry
+= _addevent.nfsd.unlink.entry
{
update_record()
}
probe _addevent.nfsd.unlink.entry
= nfsd.unlink
{
log_nfsd_unlink($fhp,filename,type)
}
function log_nfsd_unlink(fhp:long,filename:string,type:long)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fhp);
__u64 i_ino[3];
decode_fh(&fhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_UNLINK_ENTRY,"%1b%8b%8b%8b%0s%4b",
(_FMT_)fhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],
THIS->filename,THIS->type);
%}
probe addevent.nfsd.unlink.return
+= _addevent.nfsd.unlink.return
{
update_record()
}
probe _addevent.nfsd.unlink.return
= nfsd.unlink.return
{
log_nfs_return(HOOKID_NFSD_UNLINK_RETURN,$return)
}
probe addevent.nfsd.rename.entry
+= _addevent.nfsd.rename.entry
{
update_record()
}
probe _addevent.nfsd.rename.entry
= nfsd.rename
{
log_nfsd_rename($ffhp,filename,$tfhp,tname)
}
function log_nfsd_rename(fhp:long,filename:string,tfhp:long,tname:string)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fhp);
struct svc_fh * tfhp = (struct svc_fh*)((long)THIS->tfhp);
__u64 old_ino[3],i_ino[3];
decode_fh(&fhp->fh_handle,old_ino);
decode_fh(&tfhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_RENAME_ENTRY,"%1b%8b%8b%8b%0s%1b%8b%8b%8b%0s",
(_FMT_)fhp->fh_handle.fh_size,old_ino[0],old_ino[1],old_ino[2],
THIS->filename, (_FMT_)tfhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],
THIS->tname);
%}
probe addevent.nfsd.rename.return
+= _addevent.nfsd.rename.return
{
update_record()
}
probe _addevent.nfsd.rename.return
= nfsd.rename.return
{
log_nfs_return(HOOKID_NFSD_RENAME_RETURN,$return)
}
probe addevent.nfsd.open.entry
+= _addevent.nfsd.open.entry
{
update_record()
}
probe _addevent.nfsd.open.entry
= nfsd.open
{
log_nfsd_open($fhp,type,access)
}
function log_nfsd_open(fhp:long,type:long,access:long)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fhp);
__u64 i_ino[3];
decode_fh(&fhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_OPEN_ENTRY,"%1b%8b%8b%8b%4b%1b",
(_FMT_)fhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],
THIS->type,THIS->access);
%}
probe addevent.nfsd.open.return
+= _addevent.nfsd.open.return
{
update_record()
}
probe _addevent.nfsd.open.return
= nfsd.open.return
{
log_nfs_return(HOOKID_NFSD_OPEN_RETURN,$return)
}
probe addevent.nfsd.close.entry
+= _addevent.nfsd.close.entry
{
update_record()
}
probe _addevent.nfsd.close.entry
= nfsd.close
{
log_nfsd_close(filename)
}
function log_nfsd_close(filename:string)%{ /*pure*/
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_CLOSE_ENTRY,"%0s",THIS->filename);
%}
probe addevent.nfsd.close.return
+= _addevent.nfsd.close.return
{
update_record()
}
probe _addevent.nfsd.close.return
= nfsd.close.return
{
}
probe addevent.nfsd.read.entry
+= _addevent.nfsd.read.entry
{
update_record()
}
probe _addevent.nfsd.read.entry
= nfsd.read
{
log_nfsd_read($fhp,count,offset,$vec,vlen)
}
function log_nfsd_read(fhp:long,count:long,offset:long,
vec:long,vlen:long)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fhp);
struct kvec * vec = (struct kvec *)((long)THIS->vec);
__u64 i_ino[3];
decode_fh(&fhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_READ_ENTRY,"%1b%8b%8b%8b%8b%8b%8b%8b",
(_FMT_)fhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],
THIS->count,THIS->offset,(_FMT_)vec->iov_len,THIS->vlen);
%}
probe addevent.nfsd.read.return
+= _addevent.nfsd.read.return
{
update_record()
}
probe _addevent.nfsd.read.return
= nfsd.read.return
{
log_nfs_return(HOOKID_NFSD_READ_RETURN,$return)
}
probe addevent.nfsd.write.entry
+= _addevent.nfsd.write.entry
{
update_record()
}
probe _addevent.nfsd.write.entry
= nfsd.write
{
log_nfsd_write($fhp,count,offset,$vec,vlen)
}
function log_nfsd_write(fhp:long,count:long,offset:long,
vec:long,vlen:long)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fhp);
struct kvec * vec = (struct kvec *)((long)THIS->vec);
__u64 i_ino[3];
decode_fh(&fhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_WRITE_ENTRY,"%1b%8b%8b%8b%8b%8b%8b%8b",
(_FMT_)fhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],
THIS->count,THIS->offset,(_FMT_)vec->iov_len,THIS->vlen);
%}
probe addevent.nfsd.write.return
+= _addevent.nfsd.write.return
{
update_record()
}
probe _addevent.nfsd.write.return
= nfsd.write.return
{
log_nfs_return(HOOKID_NFSD_WRITE_RETURN,$return)
}
probe addevent.nfsd.commit.entry
+= _addevent.nfsd.commit.entry
{
update_record()
}
probe _addevent.nfsd.commit.entry
= nfsd.commit
{
log_nfsd_commit($fhp,count,offset)
}
function log_nfsd_commit(fhp:long,count:long,offset:long)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fhp);
__u64 i_ino[3];
decode_fh(&fhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_COMMIT_ENTRY,"%1b%8b%8b%8b%8b%8b",
(_FMT_)fhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],
THIS->count,THIS->offset);
%}
probe addevent.nfsd.commit.return
+= _addevent.nfsd.commit.return
{
update_record()
}
probe _addevent.nfsd.commit.return
= nfsd.commit.return
{
log_nfs_return(HOOKID_NFSD_COMMIT_RETURN,$return)
}
probe addevent.nfsd.proc = addevent.nfsd.proc.entry,
addevent.nfsd.proc.return
{}
probe addevent.nfsd.proc.entry =
addevent.nfsd.proc.lookup.entry,
addevent.nfsd.proc.read.entry,
addevent.nfsd.proc.write.entry,
addevent.nfsd.proc.commit.entry,
addevent.nfsd.proc.compound.entry,
addevent.nfsd.proc.remove.entry,
addevent.nfsd.proc.rename.entry,
addevent.nfsd.proc.create.entry
{}
probe addevent.nfsd.proc.return =
addevent.nfsd.proc.lookup.return,
addevent.nfsd.proc.read.return,
addevent.nfsd.proc.write.return,
addevent.nfsd.proc.commit.return,
addevent.nfsd.proc.compound.return,
addevent.nfsd.proc.remove.return,
addevent.nfsd.proc.rename.return,
addevent.nfsd.proc.create.return
{}
probe addevent.nfsd.proc.lookup.entry
+= _addevent.nfsd.proc.lookup.entry
{
update_record()
}
probe _addevent.nfsd.proc.lookup.entry
= nfsd.proc.lookup
{
log_nfsd_proc_lookup(fh,version,filename)
}
function log_nfsd_proc_lookup(fh:long,version:long,filename:string)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fh);
__u64 i_ino[3];
decode_fh(&fhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_PROC_LOOKUP_ENTRY,"%1b%8b%8b%8b%1b%0s",
(_FMT_)fhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],
THIS->version,THIS->filename);
%}
probe addevent.nfsd.proc.lookup.return
+= _addevent.nfsd.proc.lookup.return
{
update_record()
}
probe _addevent.nfsd.proc.lookup.return
= nfsd.proc.lookup.return
{
log_nfs_return(HOOKID_NFSD_PROC_LOOKUP_RETURN,$return)
}
probe addevent.nfsd.proc.read.entry
+= _addevent.nfsd.proc.read.entry
{
update_record()
}
probe _addevent.nfsd.proc.read.entry
= nfsd.proc.read
{
log_nfsd_proc_read(fh,version,count,offset,vec,vlen)
}
function log_nfsd_proc_read(fhp:long,version:long,count:long,offset:long,
vec:long,vlen:long)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fhp);
struct kvec * vec = (struct kvec *)((long)THIS->vec);
__u64 i_ino[3];
decode_fh(&fhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_PROC_READ_ENTRY,"%1b%8b%8b%8b%1b%8b%8b%8b%8b",
(_FMT_)fhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],THIS->version,
THIS->count,THIS->offset,(_FMT_)vec->iov_len,THIS->vlen);
%}
probe addevent.nfsd.proc.read.return
+= _addevent.nfsd.proc.read.return
{
update_record()
}
probe _addevent.nfsd.proc.read.return
= nfsd.proc.read.return
{
log_nfs_return(HOOKID_NFSD_PROC_READ_RETURN,$return)
}
probe addevent.nfsd.proc.write.entry
+= _addevent.nfsd.proc.write.entry
{
update_record()
}
probe _addevent.nfsd.proc.write.entry
= nfsd.proc.write
{
log_nfsd_proc_write(fh,version,count,offset,vec,vlen)
}
function log_nfsd_proc_write(fhp:long,version:long,count:long,offset:long,
vec:long,vlen:long)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fhp);
struct kvec * vec = (struct kvec *)((long)THIS->vec);
__u64 i_ino[3];
decode_fh(&fhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_PROC_WRITE_ENTRY,"%1b%8b%8b%8b%1b%8b%8b%8b%8b",
(_FMT_)fhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],THIS->version,
THIS->count,THIS->offset,(_FMT_)vec->iov_len,THIS->vlen);
%}
probe addevent.nfsd.proc.write.return
+= _addevent.nfsd.proc.write.return
{
update_record()
}
probe _addevent.nfsd.proc.write.return
= nfsd.proc.write.return
{
log_nfs_return(HOOKID_NFSD_PROC_WRITE_RETURN,$return)
}
probe addevent.nfsd.proc.commit.entry
+= _addevent.nfsd.proc.commit.entry
{
update_record()
}
probe _addevent.nfsd.proc.commit.entry
= nfsd.proc.commit
{
log_nfsd_proc_commit(fh,version,count,offset)
}
function log_nfsd_proc_commit(fhp:long,version:long,count:long,offset:long)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fhp);
__u64 i_ino[3];
decode_fh(&fhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_PROC_COMMIT_ENTRY,"%1b%8b%8b%8b%1b%8b%8b",
(_FMT_)fhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],THIS->version,
THIS->count,THIS->offset);
%}
probe addevent.nfsd.proc.commit.return
+= _addevent.nfsd.proc.commit.return
{
update_record()
}
probe _addevent.nfsd.proc.commit.return
= nfsd.proc.commit.return
{
log_nfs_return(HOOKID_NFSD_PROC_COMMIT_RETURN,$return)
}
probe addevent.nfsd.proc.compound.entry
+= _addevent.nfsd.proc.compound.entry
{
update_record()
}
probe _addevent.nfsd.proc.compound.entry
= nfsd.proc.compound
{
log_nfsd_proc_compound(num)
}
function log_nfsd_proc_compound(num:long)%{ /*pure*/
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_PROC_COMPOUND_ENTRY,"%4b", THIS->num);
%}
probe addevent.nfsd.proc.compound.return
+= _addevent.nfsd.proc.compound.return
{
update_record()
}
probe _addevent.nfsd.proc.compound.return
= nfsd.proc.compound.return
{
log_nfs_return(HOOKID_NFSD_PROC_COMPOUND_RETURN,$return)
}
probe addevent.nfsd.proc.remove.entry
+= _addevent.nfsd.proc.remove.entry
{
update_record()
}
probe _addevent.nfsd.proc.remove.entry
= nfsd.proc.remove
{
log_nfsd_proc_remove(fh,version,filename)
}
function log_nfsd_proc_remove(fhp:long,version:long,filename:string)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fhp);
__u64 i_ino[3];
decode_fh(&fhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_PROC_REMOVE_ENTRY,"%1b%8b%8b%8b%1b%0s",
(_FMT_)fhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],THIS->version,
THIS->filename);
%}
probe addevent.nfsd.proc.remove.return
+= _addevent.nfsd.proc.remove.return
{
update_record()
}
probe _addevent.nfsd.proc.remove.return
= nfsd.proc.remove.return
{
log_nfs_return(HOOKID_NFSD_PROC_REMOVE_RETURN,$return)
}
probe addevent.nfsd.proc.rename.entry
+= _addevent.nfsd.proc.rename.entry
{
update_record()
}
probe _addevent.nfsd.proc.rename.entry
= nfsd.proc.rename
{
log_nfsd_proc_rename(fh,version,filename,tfh,tname)
}
function log_nfsd_proc_rename(fhp:long,version:long,filename:string,
tfh:long,tname:string)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fhp);
struct svc_fh * tfhp = (struct svc_fh*)((long)THIS->tfh);
__u64 i_ino[3],o_ino[3];
decode_fh(&fhp->fh_handle,o_ino);
decode_fh(&tfhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_PROC_RENAME_ENTRY,"%1b%1b%8b%8b%8b%0s%1b%8b%8b%8b%0s",
THIS->version,(_FMT_)fhp->fh_handle.fh_size,o_ino[0],o_ino[1],o_ino[2],
THIS->filename, (_FMT_)tfhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],
THIS->tname);
%}
probe addevent.nfsd.proc.rename.return
+= _addevent.nfsd.proc.rename.return
{
update_record()
}
probe _addevent.nfsd.proc.rename.return
= nfsd.proc.rename.return
{
log_nfs_return(HOOKID_NFSD_PROC_RENAME_RETURN,$return)
}
probe addevent.nfsd.proc.create.entry
+= _addevent.nfsd.proc.create.entry
{
update_record()
}
probe _addevent.nfsd.proc.create.entry
= nfsd.proc.create
{
log_nfsd_proc_create(fh,version,filename)
}
function log_nfsd_proc_create(fhp:long,version:long,filename:string)%{ /*pure*/
struct svc_fh * fhp = (struct svc_fh*)((long)THIS->fhp);
__u64 i_ino[3];
decode_fh(&fhp->fh_handle,i_ino);
_lket_trace(_GROUP_NFSD,_HOOKID_NFSD_PROC_CREATE_ENTRY,"%1b%8b%8b%8b%1b%0s",
(_FMT_)fhp->fh_handle.fh_size,i_ino[0],i_ino[1],i_ino[2],
THIS->version,THIS->filename);
%}
probe addevent.nfsd.proc.create.return
+= _addevent.nfsd.proc.create.return
{
update_record()
}
probe _addevent.nfsd.proc.create.return
= nfsd.proc.create.return
{
log_nfs_return(HOOKID_NFSD_PROC_CREATE_RETURN,$return)
}