NFSD: Move nfsd_file_trace_alloc() tracepoint
[ Upstream commit b40a2839470cd62ed68c4a32d72a18ee8975b1ac ] Avoid recording the allocation of an nfsd_file item that is immediately released because a matching item was already inserted in the hash. Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
96ab7b7d71
commit
450cd975fe
2 changed files with 25 additions and 2 deletions
|
@ -302,7 +302,6 @@ nfsd_file_alloc(struct nfsd_file_lookup_key *key, unsigned int may)
|
||||||
refcount_set(&nf->nf_ref, 2);
|
refcount_set(&nf->nf_ref, 2);
|
||||||
nf->nf_may = key->need;
|
nf->nf_may = key->need;
|
||||||
nf->nf_mark = NULL;
|
nf->nf_mark = NULL;
|
||||||
trace_nfsd_file_alloc(nf);
|
|
||||||
}
|
}
|
||||||
return nf;
|
return nf;
|
||||||
}
|
}
|
||||||
|
@ -1125,6 +1124,7 @@ out_status:
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
open_file:
|
open_file:
|
||||||
|
trace_nfsd_file_alloc(nf);
|
||||||
nf->nf_mark = nfsd_file_mark_find_or_create(nf);
|
nf->nf_mark = nfsd_file_mark_find_or_create(nf);
|
||||||
if (nf->nf_mark) {
|
if (nf->nf_mark) {
|
||||||
if (open) {
|
if (open) {
|
||||||
|
|
|
@ -739,12 +739,35 @@ DEFINE_EVENT(nfsd_file_class, name, \
|
||||||
TP_PROTO(struct nfsd_file *nf), \
|
TP_PROTO(struct nfsd_file *nf), \
|
||||||
TP_ARGS(nf))
|
TP_ARGS(nf))
|
||||||
|
|
||||||
DEFINE_NFSD_FILE_EVENT(nfsd_file_alloc);
|
|
||||||
DEFINE_NFSD_FILE_EVENT(nfsd_file_put_final);
|
DEFINE_NFSD_FILE_EVENT(nfsd_file_put_final);
|
||||||
DEFINE_NFSD_FILE_EVENT(nfsd_file_unhash);
|
DEFINE_NFSD_FILE_EVENT(nfsd_file_unhash);
|
||||||
DEFINE_NFSD_FILE_EVENT(nfsd_file_put);
|
DEFINE_NFSD_FILE_EVENT(nfsd_file_put);
|
||||||
DEFINE_NFSD_FILE_EVENT(nfsd_file_unhash_and_dispose);
|
DEFINE_NFSD_FILE_EVENT(nfsd_file_unhash_and_dispose);
|
||||||
|
|
||||||
|
TRACE_EVENT(nfsd_file_alloc,
|
||||||
|
TP_PROTO(
|
||||||
|
const struct nfsd_file *nf
|
||||||
|
),
|
||||||
|
TP_ARGS(nf),
|
||||||
|
TP_STRUCT__entry(
|
||||||
|
__field(const void *, nf_inode)
|
||||||
|
__field(unsigned long, nf_flags)
|
||||||
|
__field(unsigned long, nf_may)
|
||||||
|
__field(unsigned int, nf_ref)
|
||||||
|
),
|
||||||
|
TP_fast_assign(
|
||||||
|
__entry->nf_inode = nf->nf_inode;
|
||||||
|
__entry->nf_flags = nf->nf_flags;
|
||||||
|
__entry->nf_ref = refcount_read(&nf->nf_ref);
|
||||||
|
__entry->nf_may = nf->nf_may;
|
||||||
|
),
|
||||||
|
TP_printk("inode=%p ref=%u flags=%s may=%s",
|
||||||
|
__entry->nf_inode, __entry->nf_ref,
|
||||||
|
show_nf_flags(__entry->nf_flags),
|
||||||
|
show_nfsd_may_flags(__entry->nf_may)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
TRACE_EVENT(nfsd_file_acquire,
|
TRACE_EVENT(nfsd_file_acquire,
|
||||||
TP_PROTO(
|
TP_PROTO(
|
||||||
const struct svc_rqst *rqstp,
|
const struct svc_rqst *rqstp,
|
||||||
|
|
Loading…
Add table
Reference in a new issue