* [PATCH 0/1] SUNRPC: Status trace points @ 2012-01-23 19:54 Steve Dickson 2012-01-23 19:54 ` [PATCH 1/1] SUNRPC: Adding status " Steve Dickson 0 siblings, 1 reply; 7+ messages in thread From: Steve Dickson @ 2012-01-23 19:54 UTC (permalink / raw) To: Linux NFS Mailing List Here are three more trace points that add to the trace points Trond posted last week. Meaning this patch is dependent on Trond's patch. They recorded the status of binds and connections which is useful when debugging hangs and loops. I used them injunction with the systemtap probs in the tracepoints/ directory of my (unsupported) systemtap git tree: git://fedorapeople.org/~steved/systemtap.git (Note, the probs I used to test Trond's trace points are also in that directory) Steve Dickson (1): SUNRPC: Adding status trace points include/trace/events/sunrpc.h | 45 +++++++++++++++++++++++++++++++++++++++++ net/sunrpc/clnt.c | 4 +++ 2 files changed, 49 insertions(+), 0 deletions(-) -- 1.7.7.5 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/1] SUNRPC: Adding status trace points 2012-01-23 19:54 [PATCH 0/1] SUNRPC: Status trace points Steve Dickson @ 2012-01-23 19:54 ` Steve Dickson 2012-01-23 20:02 ` Chuck Lever 2012-01-23 21:36 ` Trond Myklebust 0 siblings, 2 replies; 7+ messages in thread From: Steve Dickson @ 2012-01-23 19:54 UTC (permalink / raw) To: Linux NFS Mailing List This patch adds three trace points to the status routines in the sunrpc state machine. Signed-off-by: Steve Dickson <steved@redhat.com> --- include/trace/events/sunrpc.h | 45 +++++++++++++++++++++++++++++++++++++++++ net/sunrpc/clnt.c | 4 +++ 2 files changed, 49 insertions(+), 0 deletions(-) diff --git a/include/trace/events/sunrpc.h b/include/trace/events/sunrpc.h index 1852f11..bca5ad3 100644 --- a/include/trace/events/sunrpc.h +++ b/include/trace/events/sunrpc.h @@ -8,6 +8,51 @@ #include <linux/sunrpc/clnt.h> #include <linux/tracepoint.h> +DECLARE_EVENT_CLASS(rpc_task_status, + + TP_PROTO(struct rpc_task *task), + + TP_ARGS(task), + + TP_STRUCT__entry( + __field(int, status) + ), + + TP_fast_assign( + __entry->status = task->tk_status; + ), + + TP_printk("status %d", __entry->status) +); + +DEFINE_EVENT(rpc_task_status, rpc_call_status, + TP_PROTO(struct rpc_task *task), + + TP_ARGS(task) +); + +DEFINE_EVENT(rpc_task_status, rpc_bind_status, + TP_PROTO(struct rpc_task *task), + + TP_ARGS(task) +); + +TRACE_EVENT(rpc_connect_status, + TP_PROTO(int status), + + TP_ARGS(status), + + TP_STRUCT__entry( + __field(int, status) + ), + + TP_fast_assign( + __entry->status = status; + ), + + TP_printk("status=%d", __entry->status) +); + DECLARE_EVENT_CLASS(rpc_task_running, TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index f0268ea..bbe7385 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c @@ -55,6 +55,7 @@ static DEFINE_SPINLOCK(rpc_client_lock); static DECLARE_WAIT_QUEUE_HEAD(destroy_wait); +#include <trace/events/sunrpc.h> static void call_start(struct rpc_task *task); static void call_reserve(struct rpc_task *task); @@ -1163,6 +1164,7 @@ call_bind_status(struct rpc_task *task) return; } + trace_rpc_bind_status(task); switch (task->tk_status) { case -ENOMEM: dprintk("RPC: %5u rpcbind out of memory\n", task->tk_pid); @@ -1262,6 +1264,7 @@ call_connect_status(struct rpc_task *task) return; } + trace_rpc_connect_status(status); switch (status) { /* if soft mounted, test if we've timed out */ case -ETIMEDOUT: @@ -1450,6 +1453,7 @@ call_status(struct rpc_task *task) return; } + trace_rpc_call_status(task); task->tk_status = 0; switch(status) { case -EHOSTDOWN: -- 1.7.7.5 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/1] SUNRPC: Adding status trace points 2012-01-23 19:54 ` [PATCH 1/1] SUNRPC: Adding status " Steve Dickson @ 2012-01-23 20:02 ` Chuck Lever 2012-01-23 20:49 ` Steve Dickson 2012-01-23 21:36 ` Trond Myklebust 1 sibling, 1 reply; 7+ messages in thread From: Chuck Lever @ 2012-01-23 20:02 UTC (permalink / raw) To: Steve Dickson; +Cc: Linux NFS Mailing List On Jan 23, 2012, at 2:54 PM, Steve Dickson wrote: > This patch adds three trace points to the status routines > in the sunrpc state machine. > > Signed-off-by: Steve Dickson <steved@redhat.com> > --- > include/trace/events/sunrpc.h | 45 +++++++++++++++++++++++++++++++++++++++++ > net/sunrpc/clnt.c | 4 +++ > 2 files changed, 49 insertions(+), 0 deletions(-) > > diff --git a/include/trace/events/sunrpc.h b/include/trace/events/sunrpc.h > index 1852f11..bca5ad3 100644 > --- a/include/trace/events/sunrpc.h > +++ b/include/trace/events/sunrpc.h > @@ -8,6 +8,51 @@ > #include <linux/sunrpc/clnt.h> > #include <linux/tracepoint.h> > > +DECLARE_EVENT_CLASS(rpc_task_status, > + > + TP_PROTO(struct rpc_task *task), > + > + TP_ARGS(task), > + > + TP_STRUCT__entry( > + __field(int, status) > + ), > + > + TP_fast_assign( > + __entry->status = task->tk_status; > + ), > + > + TP_printk("status %d", __entry->status) > +); > + > +DEFINE_EVENT(rpc_task_status, rpc_call_status, > + TP_PROTO(struct rpc_task *task), > + > + TP_ARGS(task) > +); > + > +DEFINE_EVENT(rpc_task_status, rpc_bind_status, > + TP_PROTO(struct rpc_task *task), > + > + TP_ARGS(task) > +); > + > +TRACE_EVENT(rpc_connect_status, > + TP_PROTO(int status), > + > + TP_ARGS(status), > + > + TP_STRUCT__entry( > + __field(int, status) > + ), > + > + TP_fast_assign( > + __entry->status = status; > + ), > + > + TP_printk("status=%d", __entry->status) > +); > + > DECLARE_EVENT_CLASS(rpc_task_running, > > TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), > diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c > index f0268ea..bbe7385 100644 > --- a/net/sunrpc/clnt.c > +++ b/net/sunrpc/clnt.c > @@ -55,6 +55,7 @@ static DEFINE_SPINLOCK(rpc_client_lock); > > static DECLARE_WAIT_QUEUE_HEAD(destroy_wait); > > +#include <trace/events/sunrpc.h> I'd prefer that this #include be kept with the others at the head of the file, unless there is a strong reason this one needs to be inconsistent. I'm glad a clean way was found to add trace points to the RPC client. > static void call_start(struct rpc_task *task); > static void call_reserve(struct rpc_task *task); > @@ -1163,6 +1164,7 @@ call_bind_status(struct rpc_task *task) > return; > } > > + trace_rpc_bind_status(task); > switch (task->tk_status) { > case -ENOMEM: > dprintk("RPC: %5u rpcbind out of memory\n", task->tk_pid); > @@ -1262,6 +1264,7 @@ call_connect_status(struct rpc_task *task) > return; > } > > + trace_rpc_connect_status(status); Is this trace point as useful as, say, a trace point in xprt_connect_status(), or in the transport's connect worker? The way transport connection works today is that all of the actual work is handled while sending an RPC, and is basically hidden from the FSM. I'd like to capture connection events, I'm just wondering if a trace point here is the best way to do it. > switch (status) { > /* if soft mounted, test if we've timed out */ > case -ETIMEDOUT: > @@ -1450,6 +1453,7 @@ call_status(struct rpc_task *task) > return; > } > > + trace_rpc_call_status(task); > task->tk_status = 0; > switch(status) { > case -EHOSTDOWN: > -- > 1.7.7.5 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Chuck Lever chuck[dot]lever[at]oracle[dot]com ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/1] SUNRPC: Adding status trace points 2012-01-23 20:02 ` Chuck Lever @ 2012-01-23 20:49 ` Steve Dickson 0 siblings, 0 replies; 7+ messages in thread From: Steve Dickson @ 2012-01-23 20:49 UTC (permalink / raw) To: Chuck Lever; +Cc: Linux NFS Mailing List On 01/23/2012 03:02 PM, Chuck Lever wrote: > > On Jan 23, 2012, at 2:54 PM, Steve Dickson wrote: > >> This patch adds three trace points to the status routines >> in the sunrpc state machine. >> >> Signed-off-by: Steve Dickson <steved@redhat.com> >> --- >> include/trace/events/sunrpc.h | 45 +++++++++++++++++++++++++++++++++++++++++ >> net/sunrpc/clnt.c | 4 +++ >> 2 files changed, 49 insertions(+), 0 deletions(-) >> >> diff --git a/include/trace/events/sunrpc.h b/include/trace/events/sunrpc.h >> index 1852f11..bca5ad3 100644 >> --- a/include/trace/events/sunrpc.h >> +++ b/include/trace/events/sunrpc.h >> @@ -8,6 +8,51 @@ >> #include <linux/sunrpc/clnt.h> >> #include <linux/tracepoint.h> >> >> +DECLARE_EVENT_CLASS(rpc_task_status, >> + >> + TP_PROTO(struct rpc_task *task), >> + >> + TP_ARGS(task), >> + >> + TP_STRUCT__entry( >> + __field(int, status) >> + ), >> + >> + TP_fast_assign( >> + __entry->status = task->tk_status; >> + ), >> + >> + TP_printk("status %d", __entry->status) >> +); >> + >> +DEFINE_EVENT(rpc_task_status, rpc_call_status, >> + TP_PROTO(struct rpc_task *task), >> + >> + TP_ARGS(task) >> +); >> + >> +DEFINE_EVENT(rpc_task_status, rpc_bind_status, >> + TP_PROTO(struct rpc_task *task), >> + >> + TP_ARGS(task) >> +); >> + >> +TRACE_EVENT(rpc_connect_status, >> + TP_PROTO(int status), >> + >> + TP_ARGS(status), >> + >> + TP_STRUCT__entry( >> + __field(int, status) >> + ), >> + >> + TP_fast_assign( >> + __entry->status = status; >> + ), >> + >> + TP_printk("status=%d", __entry->status) >> +); >> + >> DECLARE_EVENT_CLASS(rpc_task_running, >> >> TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), >> diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c >> index f0268ea..bbe7385 100644 >> --- a/net/sunrpc/clnt.c >> +++ b/net/sunrpc/clnt.c >> @@ -55,6 +55,7 @@ static DEFINE_SPINLOCK(rpc_client_lock); >> >> static DECLARE_WAIT_QUEUE_HEAD(destroy_wait); >> >> +#include <trace/events/sunrpc.h> > > I'd prefer that this #include be kept with the others at the head of the file, unless there is a strong reason this one needs to be inconsistent. No particular reason it there... Things still compile when its moved up. Trond, if you are inclined to accept these I'll do the repost. > > I'm glad a clean way was found to add trace points to the RPC client. Ditto... I wounder if it time we talking about maintaining some basic probs that we can point people to help them debug. Also maybe come up with some type of strategy of how we want to use this in the future... Should be start moving toward having trace point replace dprintks? steved. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/1] SUNRPC: Adding status trace points 2012-01-23 19:54 ` [PATCH 1/1] SUNRPC: Adding status " Steve Dickson 2012-01-23 20:02 ` Chuck Lever @ 2012-01-23 21:36 ` Trond Myklebust 2012-01-24 13:34 ` Steve Dickson 1 sibling, 1 reply; 7+ messages in thread From: Trond Myklebust @ 2012-01-23 21:36 UTC (permalink / raw) To: Steve Dickson; +Cc: Linux NFS Mailing List On Mon, 2012-01-23 at 14:54 -0500, Steve Dickson wrote: > This patch adds three trace points to the status routines > in the sunrpc state machine. > > Signed-off-by: Steve Dickson <steved@redhat.com> > --- > include/trace/events/sunrpc.h | 45 +++++++++++++++++++++++++++++++++++++++++ > net/sunrpc/clnt.c | 4 +++ > 2 files changed, 49 insertions(+), 0 deletions(-) > > diff --git a/include/trace/events/sunrpc.h b/include/trace/events/sunrpc.h > index 1852f11..bca5ad3 100644 > --- a/include/trace/events/sunrpc.h > +++ b/include/trace/events/sunrpc.h > @@ -8,6 +8,51 @@ > #include <linux/sunrpc/clnt.h> > #include <linux/tracepoint.h> > > +DECLARE_EVENT_CLASS(rpc_task_status, > + > + TP_PROTO(struct rpc_task *task), > + > + TP_ARGS(task), > + > + TP_STRUCT__entry( > + __field(int, status) > + ), > + > + TP_fast_assign( > + __entry->status = task->tk_status; > + ), > + > + TP_printk("status %d", __entry->status) > +); How do you tell which RPC task this refers to in the output? Shouldn't we rather make the above TP_printk("task:%p@%p, status %d", __entry->task, __entry->clnt, __entry->status) so that it matches the format in the previous tracepoint patch? Also, why are you adding tracepoints for specific states in net/sunrpc/clnt.c? Is the intention to allow the user to target specific bugs that might be harder to spot in the output from trace_rpc_task_run_action()? Cheers Trond -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@netapp.com www.netapp.com ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/1] SUNRPC: Adding status trace points 2012-01-23 21:36 ` Trond Myklebust @ 2012-01-24 13:34 ` Steve Dickson 2012-01-24 17:12 ` Myklebust, Trond 0 siblings, 1 reply; 7+ messages in thread From: Steve Dickson @ 2012-01-24 13:34 UTC (permalink / raw) To: Trond Myklebust; +Cc: Linux NFS Mailing List Hey, On 01/23/2012 04:36 PM, Trond Myklebust wrote: > On Mon, 2012-01-23 at 14:54 -0500, Steve Dickson wrote: >> This patch adds three trace points to the status routines >> in the sunrpc state machine. >> >> Signed-off-by: Steve Dickson <steved@redhat.com> >> --- >> include/trace/events/sunrpc.h | 45 +++++++++++++++++++++++++++++++++++++++++ >> net/sunrpc/clnt.c | 4 +++ >> 2 files changed, 49 insertions(+), 0 deletions(-) >> >> diff --git a/include/trace/events/sunrpc.h b/include/trace/events/sunrpc.h >> index 1852f11..bca5ad3 100644 >> --- a/include/trace/events/sunrpc.h >> +++ b/include/trace/events/sunrpc.h >> @@ -8,6 +8,51 @@ >> #include <linux/sunrpc/clnt.h> >> #include <linux/tracepoint.h> >> >> +DECLARE_EVENT_CLASS(rpc_task_status, >> + >> + TP_PROTO(struct rpc_task *task), >> + >> + TP_ARGS(task), >> + >> + TP_STRUCT__entry( >> + __field(int, status) >> + ), >> + >> + TP_fast_assign( >> + __entry->status = task->tk_status; >> + ), >> + >> + TP_printk("status %d", __entry->status) >> +); > > How do you tell which RPC task this refers to in the output? >From the task pointer I send up to the prob. Once I have that pointer I can grab any field out it. An example: probe kernel.trace("rpc_call_status") { terror = task_status($task); if (terror) printf("%s[%d]:call_status:%s:%s: error %d (%s)\n", execname(), pid(), cl_server($task), cl_prog($task), terror, errno_str(terror)); } The home grown routine task_status($task) pulls the status out task structure. If there is status I will get the following output: mount.nfs[13368]:call_status:vf16:nfs[4]:0: error -32 (EPIPE) The built in routine execname() and pid() supply the process name and pid. The home grown routines, cl_server($task) and cl_prog($task) pull out the server, protocol, and version from the task. Finally the built in routine errno_str() is used for the errno to string conversion. > Shouldn't we rather make the above > > TP_printk("task:%p@%p, status %d", __entry->task, __entry->clnt, __entry->status) > > so that it matches the format in the previous tracepoint patch? Sure if you want to standardizer on that type of format thats fine with me... but, as you do in your trace points, we should also make the clnt point available to the prob by making it part of the TP_ARGS(). The more data we can look at the better.. Question about TP_printk() statements? How do you uses them? Meaning how get them to print? I've never needed or used them since I always used probs to grab that type of info. > > Also, why are you adding tracepoints for specific states in > net/sunrpc/clnt.c? I was just looking for status not state. Basically to see if there is an problem at all... > Is the intention to allow the user to target specific > bugs that might be harder to spot in the output from > trace_rpc_task_run_action()? These were architected explicitly show if a bind was failing and why or if a connection was failing and why. A much higher level (and simpler) than the info trace_rpc_task_run_action supplies. They are more directed at admin types verses developer types. (Note, these trace points are currently in RHEL and we have found them somewhat useful) steved. ^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [PATCH 1/1] SUNRPC: Adding status trace points 2012-01-24 13:34 ` Steve Dickson @ 2012-01-24 17:12 ` Myklebust, Trond 0 siblings, 0 replies; 7+ messages in thread From: Myklebust, Trond @ 2012-01-24 17:12 UTC (permalink / raw) To: Steve Dickson; +Cc: Linux NFS Mailing List PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBTdGV2ZSBEaWNrc29uIFttYWls dG86U3RldmVEQHJlZGhhdC5jb21dDQo+IFNlbnQ6IFR1ZXNkYXksIEphbnVhcnkgMjQsIDIwMTIg NTozNCBBTQ0KPiBUbzogTXlrbGVidXN0LCBUcm9uZA0KPiBDYzogTGludXggTkZTIE1haWxpbmcg TGlzdA0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDEvMV0gU1VOUlBDOiBBZGRpbmcgc3RhdHVzIHRy YWNlIHBvaW50cw0KPiANCj4gSGV5LA0KPiANCj4gT24gMDEvMjMvMjAxMiAwNDozNiBQTSwgVHJv bmQgTXlrbGVidXN0IHdyb3RlOg0KPiA+IE9uIE1vbiwgMjAxMi0wMS0yMyBhdCAxNDo1NCAtMDUw MCwgU3RldmUgRGlja3NvbiB3cm90ZToNCj4gPj4gVGhpcyBwYXRjaCBhZGRzIHRocmVlIHRyYWNl IHBvaW50cyB0byB0aGUgc3RhdHVzIHJvdXRpbmVzIGluIHRoZQ0KPiA+PiBzdW5ycGMgc3RhdGUg bWFjaGluZS4NCj4gPj4NCj4gPj4gU2lnbmVkLW9mZi1ieTogU3RldmUgRGlja3NvbiA8c3RldmVk QHJlZGhhdC5jb20+DQo+ID4+IC0tLQ0KPiA+PiAgaW5jbHVkZS90cmFjZS9ldmVudHMvc3VucnBj LmggfCAgIDQ1DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ ID4+ICBuZXQvc3VucnBjL2NsbnQuYyAgICAgICAgICAgICB8ICAgIDQgKysrDQo+ID4+ICAyIGZp bGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pDQo+ID4+DQo+ID4+ IGRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zdW5ycGMuaA0KPiA+PiBiL2luY2x1 ZGUvdHJhY2UvZXZlbnRzL3N1bnJwYy5oIGluZGV4IDE4NTJmMTEuLmJjYTVhZDMgMTAwNjQ0DQo+ ID4+IC0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3N1bnJwYy5oDQo+ID4+ICsrKyBiL2luY2x1 ZGUvdHJhY2UvZXZlbnRzL3N1bnJwYy5oDQo+ID4+IEBAIC04LDYgKzgsNTEgQEANCj4gPj4gICNp bmNsdWRlIDxsaW51eC9zdW5ycGMvY2xudC5oPg0KPiA+PiAgI2luY2x1ZGUgPGxpbnV4L3RyYWNl cG9pbnQuaD4NCj4gPj4NCj4gPj4gK0RFQ0xBUkVfRVZFTlRfQ0xBU1MocnBjX3Rhc2tfc3RhdHVz LA0KPiA+PiArDQo+ID4+ICsJVFBfUFJPVE8oc3RydWN0IHJwY190YXNrICp0YXNrKSwNCj4gPj4g Kw0KPiA+PiArCVRQX0FSR1ModGFzayksDQo+ID4+ICsNCj4gPj4gKwlUUF9TVFJVQ1RfX2VudHJ5 KA0KPiA+PiArCQlfX2ZpZWxkKGludCwgc3RhdHVzKQ0KPiA+PiArCSksDQo+ID4+ICsNCj4gPj4g KwlUUF9mYXN0X2Fzc2lnbigNCj4gPj4gKwkJX19lbnRyeS0+c3RhdHVzID0gdGFzay0+dGtfc3Rh dHVzOw0KPiA+PiArCSksDQo+ID4+ICsNCj4gPj4gKwlUUF9wcmludGsoInN0YXR1cyAlZCIsIF9f ZW50cnktPnN0YXR1cykgKTsNCj4gPg0KPiA+IEhvdyBkbyB5b3UgdGVsbCB3aGljaCBSUEMgdGFz ayB0aGlzIHJlZmVycyB0byBpbiB0aGUgb3V0cHV0Pw0KPiA+RnJvbSB0aGUgdGFzayBwb2ludGVy IEkgc2VuZCB1cCB0byB0aGUgcHJvYi4gT25jZSBJIGhhdmUgdGhhdA0KPiBwb2ludGVyIEkgY2Fu IGdyYWIgYW55IGZpZWxkIG91dCBpdC4gQW4gZXhhbXBsZToNCj4gDQo+IHByb2JlIGtlcm5lbC50 cmFjZSgicnBjX2NhbGxfc3RhdHVzIikNCj4gew0KPiAgICAgdGVycm9yID0gdGFza19zdGF0dXMo JHRhc2spOw0KPiAgICAgaWYgKHRlcnJvcikNCj4gICAgICAgICBwcmludGYoIiVzWyVkXTpjYWxs X3N0YXR1czolczolczogZXJyb3IgJWQgKCVzKVxuIiwNCj4gICAgICAgICAgICAgZXhlY25hbWUo KSwgcGlkKCksIGNsX3NlcnZlcigkdGFzayksIGNsX3Byb2coJHRhc2spLA0KPiAgICAgICAgICAg ICB0ZXJyb3IsIGVycm5vX3N0cih0ZXJyb3IpKTsNCj4gfQ0KPiBUaGUgaG9tZSBncm93biByb3V0 aW5lIHRhc2tfc3RhdHVzKCR0YXNrKSBwdWxscyB0aGUgc3RhdHVzIG91dCB0YXNrDQo+IHN0cnVj dHVyZS4gSWYgdGhlcmUgaXMgc3RhdHVzIEkgd2lsbCBnZXQgdGhlIGZvbGxvd2luZyBvdXRwdXQ6 DQo+ICAgICBtb3VudC5uZnNbMTMzNjhdOmNhbGxfc3RhdHVzOnZmMTY6bmZzWzRdOjA6IGVycm9y IC0zMiAoRVBJUEUpDQo+IA0KPiBUaGUgYnVpbHQgaW4gcm91dGluZSBleGVjbmFtZSgpIGFuZCBw aWQoKSBzdXBwbHkgdGhlIHByb2Nlc3MgbmFtZSBhbmQgcGlkLg0KPiBUaGUgaG9tZSBncm93biBy b3V0aW5lcywgY2xfc2VydmVyKCR0YXNrKSBhbmQgY2xfcHJvZygkdGFzaykgcHVsbCBvdXQgdGhl DQo+IHNlcnZlciwgcHJvdG9jb2wsIGFuZCB2ZXJzaW9uIGZyb20gdGhlIHRhc2suIEZpbmFsbHkg dGhlIGJ1aWx0IGluIHJvdXRpbmUNCj4gZXJybm9fc3RyKCkgaXMgdXNlZCBmb3IgdGhlIGVycm5v IHRvIHN0cmluZyBjb252ZXJzaW9uLg0KPiANCj4gDQo+ID4gU2hvdWxkbid0IHdlIHJhdGhlciBt YWtlIHRoZSBhYm92ZQ0KPiA+DQo+ID4gCVRQX3ByaW50aygidGFzazolcEAlcCwgc3RhdHVzICVk IiwgX19lbnRyeS0+dGFzaywgX19lbnRyeS0+Y2xudCwNCj4gX19lbnRyeS0+c3RhdHVzKQ0KPiA+ DQo+ID4gc28gdGhhdCBpdCBtYXRjaGVzIHRoZSBmb3JtYXQgaW4gdGhlIHByZXZpb3VzIHRyYWNl cG9pbnQgcGF0Y2g/DQo+IFN1cmUgaWYgeW91IHdhbnQgdG8gc3RhbmRhcmRpemVyIG9uIHRoYXQg dHlwZSBvZiBmb3JtYXQgdGhhdHMNCj4gZmluZSB3aXRoIG1lLi4uIGJ1dCwgYXMgeW91IGRvIGlu IHlvdXIgdHJhY2UgcG9pbnRzLCB3ZSBzaG91bGQgYWxzbw0KPiBtYWtlIHRoZSBjbG50IHBvaW50 IGF2YWlsYWJsZSB0byB0aGUgcHJvYiBieSBtYWtpbmcgaXQgcGFydCBvZiB0aGUNCj4gVFBfQVJH UygpLiBUaGUgbW9yZSBkYXRhIHdlIGNhbiBsb29rIGF0IHRoZSBiZXR0ZXIuLg0KPiANCj4gUXVl c3Rpb24gYWJvdXQgVFBfcHJpbnRrKCkgc3RhdGVtZW50cz8gSG93IGRvIHlvdSB1c2VzIHRoZW0/ IE1lYW5pbmcNCj4gaG93IGdldCB0aGVtIHRvIHByaW50PyBJJ3ZlIG5ldmVyIG5lZWRlZCBvciB1 c2VkIHRoZW0gc2luY2UgSQ0KPiBhbHdheXMgdXNlZCBwcm9icyB0byBncmFiIHRoYXQgdHlwZSBv ZiBpbmZvLg0KDQoNClRoZXJlIGFyZSAyIGRpZmZlcmVudCBpbnRlcmZhY2VzIGluIC9zeXMva2Vy bmVsL2RlYnVnL3RyYWNpbmcgdGhhdCB5b3UgY2FuIHVzZSB0byB0dXJuIHRoZSB0cmFjaW5nIG9u IGFuZCBvZmYuIFNlZSB0aGUgZGVzY3JpcHRpb24gaW4gRG9jdW1lbnRhdGlvbi90cmFjZS9ldmVu dHMudHh0DQoNCg0KPiA+IEFsc28sIHdoeSBhcmUgeW91IGFkZGluZyB0cmFjZXBvaW50cyBmb3Ig c3BlY2lmaWMgc3RhdGVzIGluDQo+ID4gbmV0L3N1bnJwYy9jbG50LmM/DQo+IEkgd2FzIGp1c3Qg bG9va2luZyBmb3Igc3RhdHVzIG5vdCBzdGF0ZS4gQmFzaWNhbGx5IHRvIHNlZSBpZiB0aGVyZSBp cw0KPiBhbiBwcm9ibGVtIGF0IGFsbC4uLg0KPiANCj4gPiBJcyB0aGUgaW50ZW50aW9uIHRvIGFs bG93IHRoZSB1c2VyIHRvIHRhcmdldCBzcGVjaWZpYw0KPiA+IGJ1Z3MgdGhhdCBtaWdodCBiZSBo YXJkZXIgdG8gc3BvdCBpbiB0aGUgb3V0cHV0IGZyb20NCj4gPiB0cmFjZV9ycGNfdGFza19ydW5f YWN0aW9uKCk/DQo+IFRoZXNlIHdlcmUgYXJjaGl0ZWN0ZWQgZXhwbGljaXRseSBzaG93IGlmIGEg YmluZCB3YXMgZmFpbGluZyBhbmQgd2h5DQo+IG9yIGlmIGEgY29ubmVjdGlvbiB3YXMgZmFpbGlu ZyBhbmQgd2h5LiBBIG11Y2ggaGlnaGVyIGxldmVsIChhbmQNCj4gc2ltcGxlcikgdGhhbiB0aGUg aW5mbyB0cmFjZV9ycGNfdGFza19ydW5fYWN0aW9uIHN1cHBsaWVzLg0KPiBUaGV5IGFyZSBtb3Jl IGRpcmVjdGVkIGF0IGFkbWluIHR5cGVzIHZlcnNlcyBkZXZlbG9wZXIgdHlwZXMuDQoNCk9LLiBD YW4geW91IGFkZCB0aGF0IGluZm9ybWF0aW9uIHRvIHRoZSBjaGFuZ2Vsb2c/IFdlIG1pZ2h0IGFs c28gY29uc2lkZXIgbWFpbnRhaW5pbmcgYSBkb2N1bWVudCBpbiBEb2N1bWVudHMvZmlsZXN5c3Rl bXMvbmZzIHRoYXQgcHJvdmlkZXMgYmFzaWMgaW5mb3JtYXRpb24gb24gd2hpY2ggdHJhY2Vwb2lu dHMgd2UgY29uc2lkZXIgdG8gYmUgJ2FkbWluIGRlYnVnZ2luZycgYWlkcywgYW5kIGhvdyB0aGV5 IG1heSBiZSB1c2VkLg0KDQo= ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-01-24 17:12 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-01-23 19:54 [PATCH 0/1] SUNRPC: Status trace points Steve Dickson 2012-01-23 19:54 ` [PATCH 1/1] SUNRPC: Adding status " Steve Dickson 2012-01-23 20:02 ` Chuck Lever 2012-01-23 20:49 ` Steve Dickson 2012-01-23 21:36 ` Trond Myklebust 2012-01-24 13:34 ` Steve Dickson 2012-01-24 17:12 ` Myklebust, Trond
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.