Commit b40a2839 authored by Chuck Lever's avatar Chuck Lever
Browse files

NFSD: Move nfsd_file_trace_alloc() tracepoint



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: default avatarJeff Layton <jlayton@kernel.org>
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent be023006
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -303,7 +303,6 @@ nfsd_file_alloc(struct nfsd_file_lookup_key *key, unsigned int may)
		refcount_set(&nf->nf_ref, 2);
		nf->nf_may = key->need;
		nf->nf_mark = NULL;
		trace_nfsd_file_alloc(nf);
	}
	return nf;
}
@@ -1126,6 +1125,7 @@ nfsd_file_do_acquire(struct svc_rqst *rqstp, struct svc_fh *fhp,
	return status;

open_file:
	trace_nfsd_file_alloc(nf);
	nf->nf_mark = nfsd_file_mark_find_or_create(nf);
	if (nf->nf_mark) {
		if (open) {
+24 −1
Original line number Diff line number Diff line
@@ -774,12 +774,35 @@ DEFINE_EVENT(nfsd_file_class, name, \
	TP_PROTO(struct nfsd_file *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_unhash);
DEFINE_NFSD_FILE_EVENT(nfsd_file_put);
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,
	TP_PROTO(
		const struct svc_rqst *rqstp,