linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Al Viro <viro@ZenIV.linux.org.uk>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Tejun Heo <tj@kernel.org>,
	linux-fsdevel@vger.kernel.org, chavey@google.com,
	Andrew Morton <akpm@linux-foundation.org>,
	Ingo Molnar <mingo@kernel.org>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH 1/2] vfs: make fcheck_files() an exported functions
Date: Tue, 12 Feb 2013 20:43:09 +0000	[thread overview]
Message-ID: <20130212204309.GO4503@ZenIV.linux.org.uk> (raw)
In-Reply-To: <1360693308.21867.54.camel@gandalf.local.home>

On Tue, Feb 12, 2013 at 01:21:48PM -0500, Steven Rostedt wrote:
> [ Added Ingo and Linus ]

> > I see, it's about API stability.  This TP is expected to be used by
> > internal tracer to approxmiately match generated IOs to specific
> > files, so at least the proposed usage is inside the kernel.  I suppose
> > there's no way to mark TPs internal, Steven?
> 
> We discussed this a couple of years ago at kernel summit, but for
> various reasons it never got anywhere.
> 
> https://lkml.org/lkml/2010/11/16/606
> 
> Perhaps the way to do this is to have certain tracepoints only appear
> with a kernel parameter. Something like "enable_debug_tracepoints",
> where distros will not have it enabled by default (the word "debug"
> should scare them). And thus, tools should never use them. But for those
> that need to debug systems, the kernel parameter can be added, and these
> tracepoints will "magically" appear.
> 
> I mean, do we have to support an ABI that requires a kernel parameter
> set in order to use it?  Actually, debug didn't scare them enough for
> debugfs, maybe the parameter should be called:
> "enable_unstable_tracepoints" That would be even scarier. Or have it be
> "enable_tracepoints_but_do_not_expect_them_to_exist", but that wastes up
> too much of the kernel parameter text.
> 
> Hmm, this should be pretty ease to write up. Think that would work?

I don't know and TBH I'm rather dubious about that.  In the end, it's a
simple question of cost-shifting; people with scripts that use tracepoints
vs. people working with the code those tracepoints are in.  And as far as
I'm concerned, the only acceptable situation is when *all* the price is
paid by the former.  It works for exports and it works for modules; out-of-tree
code is protected only by the amount of work needed to modify the in-tree
code depending on the same things.  And if we decide that changing all
in-tree users of something is not too costly, that's it - out-of-tree folks
might ask for help coping with the resulting change, they might try to
explain why that change is a bad idea if they notice it being discussed before
it goes in, but they have no veto power.

IOW, somebody showing up with "my out-of-tree module doesn't compile anymore,
put those methods back, restore that export and move this mutex from struct
bar back to struct foo" will get told to take a hike.  Somebody showing up
with "my userland tool relied on having event generated every time when
this mutex had been taken on struct foo, with these fields of struct foo
dumped into event" will have much stronger case when they get told that
mutex got moved to struct bar which has no such fields and neither a way to get
to equivalent information nor consistency warranties those pieces of data used
to have under that mutex.

Scary kernel options might suffice, but we had cases of userland Fine
Piece Of Software growing a dependency on "optional" kernel-side FPOS, making
it mandatory and leaving us to deal with the fallout.  Pardon me the bluntness,
but what's to stop the same people from doing the following:
Step 1: randomly chosen unstable tracepoint becomes used by udev, if present
Step 2: Fedora starts putting your scary kernel option into grub configs
Step 3: udev (while swearing support for "legacy" setups lacking that option)
gets more and more dependent on it; at that stage, any kernel-side change
breaking the tracepoint in question would cause serious pain for $BIGNUM
Fedora boxen out there
Step 4: tracepoint in question is moved from unstable class to stable, because
it's not feasible to change anymore without major userland breakage on a lot
of existing systems
Step 5: support of "legacy" setups disappears, at least on the boxen with
sufficiently recent kernel versions.
Lather, rinse, repeat...

  parent reply	other threads:[~2013-02-12 20:43 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-09 17:01 [PATCH 1/2] vfs: make fcheck_files() an exported functions Tejun Heo
2013-01-09 17:01 ` [PATCH 2/2] vfs: add fcheck tracepoint Tejun Heo
2013-02-09 19:24 ` [PATCH 1/2] vfs: make fcheck_files() an exported functions Tejun Heo
2013-02-10  0:18   ` Al Viro
2013-02-12 17:41     ` Tejun Heo
2013-02-12 18:21       ` Steven Rostedt
2013-02-12 20:21         ` Steven Rostedt
2013-02-12 20:44           ` Al Viro
2013-02-12 20:57             ` Steven Rostedt
2013-02-12 20:43         ` Al Viro [this message]
2013-02-12 21:03           ` Steven Rostedt

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=20130212204309.GO4503@ZenIV.linux.org.uk \
    --to=viro@zeniv.linux.org.uk \
    --cc=akpm@linux-foundation.org \
    --cc=chavey@google.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=tj@kernel.org \
    --cc=torvalds@linux-foundation.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).