From: Jan Kara <jack@suse.cz>
To: Theodore Ts'o <tytso@mit.edu>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Al Viro <viro@zeniv.linux.org.uk>,
Dave Chinner <david@fromorbit.com>,
Ross Zwisler <ross.zwisler@linux.intel.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Christoph Hellwig <hch@lst.de>,
Dan Williams <dan.j.williams@intel.com>,
Ingo Molnar <mingo@redhat.com>, Jan Kara <jack@suse.cz>,
Matthew Wilcox <mawilcox@microsoft.com>,
Steven Rostedt <rostedt@goodmis.org>,
"linux-ext4@vger.kernel.org" <linux-ext4@vger.kernel.org>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
linux-mm <linux-mm@kvack.org>,
"linux-nvdimm@lists.01.org" <linux-nvdimm@ml01.01.org>
Subject: Re: [PATCH 3/6] dax: add tracepoint infrastructure, PMD tracing
Date: Mon, 28 Nov 2016 09:33:27 +0100 [thread overview]
Message-ID: <20161128083327.GA2590@quack2.suse.cz> (raw)
In-Reply-To: <20161125214840.kexe5mj2yn4jtazi@thunk.org>
On Fri 25-11-16 16:48:40, Ted Tso wrote:
> On Fri, Nov 25, 2016 at 11:51:26AM -0800, Linus Torvalds wrote:
> > We do have filesystem code that is just disgusting. As an example:
> > fs/afs/ tends to have these crazy "_enter()/_exit()" macros in every
> > single function. If you want that, use the function tracer. That seems
> > to be just debugging code that has been left around for others to
> > stumble over. I do *not* believe that we should encourage that kind of
> > "machine gun spray" use of tracepoints.
>
> There is a reason why people want to be able to do that, and that's
> because kprobes doesn't give you access to the arguments and return
> codes to the functions. Maybe there could be a way to do this more
> easily using DWARF information and EBPF magic, perhaps? It won't help
> for inlined functions, of course, but most of the functions where
> people want to do this aren't generally functions which are going to
> be inlined, but rather things like write_begin, writepages, which are
> called via a struct ops table and so will never be inlined to begin
> with.
Actually, you can print register & stack contents from a kprobe and you can
get a function return value from a kretprobe (see
Documentation/trace/kprobetrace.txt). Since calling convention is fixed
(arg 1 in RDI, arg 2 in RSI...) you can relatively easily dump function
arguments on entry and dump return value on return for arbitrary function
of your choice. I was already debugging issues like that several times (in
VFS actually because of missing trace points ;)). You can even create a
kprobe to dump register contents in the middle of the function (although
there it takes more effort reading the dissasembly to see what you are
interested in).
Honza
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz>
To: Theodore Ts'o <tytso@mit.edu>
Cc: Jan Kara <jack@suse.cz>, Matthew Wilcox <mawilcox@microsoft.com>,
"linux-nvdimm@lists.01.org" <linux-nvdimm@ml01.01.org>,
Dave Chinner <david@fromorbit.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Steven Rostedt <rostedt@goodmis.org>,
Christoph Hellwig <hch@lst.de>, linux-mm <linux-mm@kvack.org>,
Ingo Molnar <mingo@redhat.com>, Al Viro <viro@zeniv.linux.org.uk>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
"linux-ext4@vger.kernel.org" <linux-ext4@vger.kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH 3/6] dax: add tracepoint infrastructure, PMD tracing
Date: Mon, 28 Nov 2016 09:33:27 +0100 [thread overview]
Message-ID: <20161128083327.GA2590@quack2.suse.cz> (raw)
In-Reply-To: <20161125214840.kexe5mj2yn4jtazi@thunk.org>
On Fri 25-11-16 16:48:40, Ted Tso wrote:
> On Fri, Nov 25, 2016 at 11:51:26AM -0800, Linus Torvalds wrote:
> > We do have filesystem code that is just disgusting. As an example:
> > fs/afs/ tends to have these crazy "_enter()/_exit()" macros in every
> > single function. If you want that, use the function tracer. That seems
> > to be just debugging code that has been left around for others to
> > stumble over. I do *not* believe that we should encourage that kind of
> > "machine gun spray" use of tracepoints.
>
> There is a reason why people want to be able to do that, and that's
> because kprobes doesn't give you access to the arguments and return
> codes to the functions. Maybe there could be a way to do this more
> easily using DWARF information and EBPF magic, perhaps? It won't help
> for inlined functions, of course, but most of the functions where
> people want to do this aren't generally functions which are going to
> be inlined, but rather things like write_begin, writepages, which are
> called via a struct ops table and so will never be inlined to begin
> with.
Actually, you can print register & stack contents from a kprobe and you can
get a function return value from a kretprobe (see
Documentation/trace/kprobetrace.txt). Since calling convention is fixed
(arg 1 in RDI, arg 2 in RSI...) you can relatively easily dump function
arguments on entry and dump return value on return for arbitrary function
of your choice. I was already debugging issues like that several times (in
VFS actually because of missing trace points ;)). You can even create a
kprobe to dump register contents in the middle of the function (although
there it takes more effort reading the dissasembly to see what you are
interested in).
Honza
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm
WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz>
To: "Theodore Ts'o" <tytso@mit.edu>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Al Viro <viro@zeniv.linux.org.uk>,
Dave Chinner <david@fromorbit.com>,
Ross Zwisler <ross.zwisler@linux.intel.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Christoph Hellwig <hch@lst.de>,
Dan Williams <dan.j.williams@intel.com>,
Ingo Molnar <mingo@redhat.com>, Jan Kara <jack@suse.cz>,
Matthew Wilcox <mawilcox@microsoft.com>,
Steven Rostedt <rostedt@goodmis.org>,
"linux-ext4@vger.kernel.org" <linux-ext4@vger.kernel.org>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
linux-mm <linux-mm@kvack.org>,
"linux-nvdimm@lists.01.org" <linux-nvdimm@ml01.01.org>
Subject: Re: [PATCH 3/6] dax: add tracepoint infrastructure, PMD tracing
Date: Mon, 28 Nov 2016 09:33:27 +0100 [thread overview]
Message-ID: <20161128083327.GA2590@quack2.suse.cz> (raw)
In-Reply-To: <20161125214840.kexe5mj2yn4jtazi@thunk.org>
On Fri 25-11-16 16:48:40, Ted Tso wrote:
> On Fri, Nov 25, 2016 at 11:51:26AM -0800, Linus Torvalds wrote:
> > We do have filesystem code that is just disgusting. As an example:
> > fs/afs/ tends to have these crazy "_enter()/_exit()" macros in every
> > single function. If you want that, use the function tracer. That seems
> > to be just debugging code that has been left around for others to
> > stumble over. I do *not* believe that we should encourage that kind of
> > "machine gun spray" use of tracepoints.
>
> There is a reason why people want to be able to do that, and that's
> because kprobes doesn't give you access to the arguments and return
> codes to the functions. Maybe there could be a way to do this more
> easily using DWARF information and EBPF magic, perhaps? It won't help
> for inlined functions, of course, but most of the functions where
> people want to do this aren't generally functions which are going to
> be inlined, but rather things like write_begin, writepages, which are
> called via a struct ops table and so will never be inlined to begin
> with.
Actually, you can print register & stack contents from a kprobe and you can
get a function return value from a kretprobe (see
Documentation/trace/kprobetrace.txt). Since calling convention is fixed
(arg 1 in RDI, arg 2 in RSI...) you can relatively easily dump function
arguments on entry and dump return value on return for arbitrary function
of your choice. I was already debugging issues like that several times (in
VFS actually because of missing trace points ;)). You can even create a
kprobe to dump register contents in the middle of the function (although
there it takes more effort reading the dissasembly to see what you are
interested in).
Honza
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
next prev parent reply other threads:[~2016-11-28 8:33 UTC|newest]
Thread overview: 124+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-23 18:44 [PATCH 0/6] introduce DAX tracepoint support Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-23 18:44 ` [PATCH 1/6] dax: fix build breakage with ext4, dax and !iomap Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
[not found] ` <1479926662-21718-2-git-send-email-ross.zwisler-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-11-24 9:02 ` Jan Kara
2016-11-24 9:02 ` Jan Kara
2016-11-24 9:02 ` Jan Kara
2016-11-24 9:02 ` Jan Kara
[not found] ` <20161124090239.GA24138-4I4JzKEfoa/jFM9bn6wA6Q@public.gmane.org>
2016-11-28 19:15 ` Ross Zwisler
2016-11-28 19:15 ` Ross Zwisler
2016-11-28 19:15 ` Ross Zwisler
[not found] ` <20161128191504.GB6637-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-11-29 8:53 ` Jan Kara
2016-11-29 8:53 ` Jan Kara
2016-11-29 8:53 ` Jan Kara
2016-11-29 8:53 ` Jan Kara
[not found] ` <20161129085303.GA7550-4I4JzKEfoa/jFM9bn6wA6Q@public.gmane.org>
2016-11-30 19:04 ` Ross Zwisler
2016-11-30 19:04 ` Ross Zwisler
2016-11-30 19:04 ` Ross Zwisler
2016-11-30 19:04 ` Ross Zwisler
[not found] ` <20161130190431.GA11793-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-12-01 7:53 ` Jan Kara
2016-12-01 7:53 ` Jan Kara
2016-12-01 7:53 ` Jan Kara
2016-12-01 7:53 ` Jan Kara
2016-11-23 18:44 ` [PATCH 2/6] dax: remove leading space from labels Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-24 9:11 ` Jan Kara
2016-11-24 9:11 ` Jan Kara
2016-11-24 9:11 ` Jan Kara
[not found] ` <20161124091140.GB24138-4I4JzKEfoa/jFM9bn6wA6Q@public.gmane.org>
2016-11-24 19:42 ` Dan Williams
2016-11-24 19:42 ` Dan Williams
2016-11-24 19:42 ` Dan Williams
2016-11-28 19:20 ` Ross Zwisler
2016-11-28 19:20 ` Ross Zwisler
2016-11-28 19:20 ` Ross Zwisler
[not found] ` <1479926662-21718-1-git-send-email-ross.zwisler-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-11-23 18:44 ` [PATCH 3/6] dax: add tracepoint infrastructure, PMD tracing Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
[not found] ` <1479926662-21718-4-git-send-email-ross.zwisler-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-11-24 9:16 ` Jan Kara
2016-11-24 9:16 ` Jan Kara
2016-11-24 9:16 ` Jan Kara
2016-11-24 9:16 ` Jan Kara
2016-11-24 17:32 ` Al Viro
2016-11-24 17:32 ` Al Viro
2016-11-24 17:32 ` Al Viro
2016-11-24 17:32 ` Al Viro
[not found] ` <20161124173220.GR1555-3bDd1+5oDREiFSDQTTA3OLVCufUGDwFn@public.gmane.org>
2016-11-25 2:49 ` Dave Chinner
2016-11-25 2:49 ` Dave Chinner
2016-11-25 2:49 ` Dave Chinner
2016-11-25 2:49 ` Dave Chinner
2016-11-25 4:14 ` Al Viro
2016-11-25 4:14 ` Al Viro
2016-11-25 4:14 ` Al Viro
2016-11-25 4:14 ` Al Viro
[not found] ` <20161125041419.GT1555-3bDd1+5oDREiFSDQTTA3OLVCufUGDwFn@public.gmane.org>
2016-11-25 7:06 ` Dave Chinner
2016-11-25 7:06 ` Dave Chinner
2016-11-25 7:06 ` Dave Chinner
2016-11-25 7:06 ` Dave Chinner
2016-11-25 7:37 ` Al Viro
2016-11-25 7:37 ` Al Viro
2016-11-25 7:37 ` Al Viro
2016-11-25 7:37 ` Al Viro
2016-11-25 19:51 ` Linus Torvalds
2016-11-25 19:51 ` Linus Torvalds
2016-11-25 19:51 ` Linus Torvalds
[not found] ` <CA+55aFy5=74ad4tByQJYnkyX079z59yn02koJ_G8kfxamjvPDw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-11-25 20:36 ` Mike Marshall
2016-11-25 20:36 ` Mike Marshall
2016-11-25 20:36 ` Mike Marshall
2016-11-25 21:48 ` Theodore Ts'o
2016-11-25 21:48 ` Theodore Ts'o
2016-11-25 21:48 ` Theodore Ts'o
2016-11-25 23:38 ` Linus Torvalds
2016-11-25 23:38 ` Linus Torvalds
2016-11-25 23:38 ` Linus Torvalds
2016-11-28 8:33 ` Jan Kara [this message]
2016-11-28 8:33 ` Jan Kara
2016-11-28 8:33 ` Jan Kara
2016-11-27 22:42 ` Dave Chinner
2016-11-27 22:42 ` Dave Chinner
2016-11-27 22:42 ` Dave Chinner
2016-11-28 0:58 ` Linus Torvalds
2016-11-28 0:58 ` Linus Torvalds
2016-11-28 0:58 ` Linus Torvalds
2016-11-28 1:45 ` Al Viro
2016-11-28 1:45 ` Al Viro
2016-11-28 9:09 ` Dave Chinner
2016-11-28 9:09 ` Dave Chinner
2016-11-28 9:09 ` Dave Chinner
2016-11-25 3:00 ` Dave Chinner
2016-11-25 3:00 ` Dave Chinner
2016-11-25 3:00 ` Dave Chinner
2016-11-28 22:46 ` Ross Zwisler
2016-11-28 22:46 ` Ross Zwisler
2016-11-28 22:46 ` Ross Zwisler
2016-11-28 22:46 ` Ross Zwisler
2016-11-29 2:02 ` Dave Chinner
2016-11-29 2:02 ` Dave Chinner
2016-11-29 2:02 ` Dave Chinner
2017-03-08 22:05 ` Mike Marshall
2017-03-08 22:05 ` Mike Marshall
2017-03-08 22:05 ` Mike Marshall
2017-03-08 22:05 ` Mike Marshall
2016-11-23 18:44 ` [PATCH 4/6] dax: update MAINTAINERS entries for FS DAX Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-23 18:44 ` [PATCH 5/6] dax: add tracepoints to dax_pmd_load_hole() Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-24 9:20 ` Jan Kara
2016-11-24 9:20 ` Jan Kara
2016-11-24 9:20 ` Jan Kara
2016-11-23 18:44 ` [PATCH 6/6] dax: add tracepoints to dax_pmd_insert_mapping() Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-23 18:44 ` Ross Zwisler
2016-11-24 9:22 ` Jan Kara
2016-11-24 9:22 ` Jan Kara
2016-11-24 9:22 ` Jan Kara
2016-11-24 9:22 ` Jan Kara
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161128083327.GA2590@quack2.suse.cz \
--to=jack@suse.cz \
--cc=akpm@linux-foundation.org \
--cc=dan.j.williams@intel.com \
--cc=david@fromorbit.com \
--cc=hch@lst.de \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-nvdimm@ml01.01.org \
--cc=mawilcox@microsoft.com \
--cc=mingo@redhat.com \
--cc=ross.zwisler@linux.intel.com \
--cc=rostedt@goodmis.org \
--cc=torvalds@linux-foundation.org \
--cc=tytso@mit.edu \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.