Commit 22a027e8 authored by Chuck Lever's avatar Chuck Lever Committed by J. Bruce Fields
Browse files

SUNRPC: Add trace event when alloc_pages_bulk() makes no progress



This is an operational low memory situation that needs to be
flagged. The new tracepoint records a timestamp and the nfsd thread
that failed to allocate pages.

Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 45f13584
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -1859,6 +1859,24 @@ TRACE_EVENT(svc_wake_up,
	TP_printk("pid=%d", __entry->pid)
);

TRACE_EVENT(svc_alloc_arg_err,
	TP_PROTO(
		unsigned int pages
	),

	TP_ARGS(pages),

	TP_STRUCT__entry(
		__field(unsigned int, pages)
	),

	TP_fast_assign(
		__entry->pages = pages;
	),

	TP_printk("pages=%u", __entry->pages)
);

TRACE_EVENT(svc_handle_xprt,
	TP_PROTO(struct svc_xprt *xprt, int len),

+1 −0
Original line number Diff line number Diff line
@@ -687,6 +687,7 @@ static int svc_alloc_arg(struct svc_rqst *rqstp)
			set_current_state(TASK_RUNNING);
			return -EINTR;
		}
		trace_svc_alloc_arg_err(pages);
		schedule_timeout(msecs_to_jiffies(500));
	}
	rqstp->rq_page_end = &rqstp->rq_pages[pages];