From: Adrian Hunter <ext-adrian.hunter@nokia.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: Pekka Enberg <penberg@cs.helsinki.fi>,
Artem.Bityutskiy@nokia.com, Artem Bityutskiy <dedekind@yandex.ru>,
LKML <linux-kernel@vger.kernel.org>,
David Woodhouse <dwmw2@infradead.org>
Subject: Re: [RFC PATCH 26/26] UBIFS: include FS to compilation
Date: Wed, 30 Apr 2008 10:04:03 +0300 [thread overview]
Message-ID: <481819E3.4070301@nokia.com> (raw)
In-Reply-To: <20080428090346.GB14100@infradead.org>
Christoph Hellwig wrote:
> On Mon, Apr 28, 2008 at 10:10:07AM +0300, Adrian Hunter wrote:
>>>> So instead of arguing about this you really ought to look at what
>>>> SLUB, for example, does. It's perfectly okay to have _debugging
>>>> checks_ compiled out (stuff like verify_inode and such) but at the
>>>> assertion level it makes no sense whatsoever!
>>> Yes, having this in filesystems is not very nice.
>> A technical reason would be more compelling than "not very nice".
>
> These checks are if properly maintained not harmful for the code,
> but they make the code less readable and there's of course the chance
> that they get out of sync. That's why the term "not very nice" is
> entirely apropinquate here.
What would make them more readable? We (ok mostly me) are not enthusiastic
about BUG_ON for the following reasons:
1. When testing and debugging you lose the opportunity to get more
information and have to reboot the test platform
2. When the system is in the hands of consumers we don't want it
to oops under any circumstances. This is particularly the case
when looking at things like BUG_ON(!PageLocked(page)). In an
embedded system, single CPU, preemption disabled, even in the
unlikely event this happens, the system would probably get away
with it.
3. We don't have many people using UBIFS so hoping they catch
BUGs is less realistic. It is also bad for us as we try to
persuade people of the merits of UBIFS. Consequently our focus
is on our own testing (which brings us back to point 1).
4. We have had a couple of situations with JFFS2 where BUG_ON was
used incorrectly to handle errors that didn't look like they
could happen but it turned out they could. I.e. an error code
should have been returned and the system allowed to continue.
In short BUG_ON can be bad all by itself.
Perhaps if we called it dbg_check() instead of ubifs_assert() ?
As for things getting out of sync, anyone making changes to UBIFS, either
without testing or testing without the debug checks turned on, is taking
a much much bigger risk than just letting the checks get out of sync.
I am not sure it is really reasonable to compare the debugging needs of
SLUB with those of UBIFS because UBIFS has a much lower visibility and
usage. There are far fewer eyes looking at the code and far fewer people
using it. Since the burden of testing really falls on just a few of us,
we are keen to have lots of checks.
>
>>> If someone feels
>>> very strong about interface assertation we should add them at the
>>> method level boundary so that the interface is verified for all
>>> filesystems.
>>>
>> The checks are not valid for all file systems.
>>
>> The point of the checks as preconditions is lost if they moved elsewhere.
>>
>> VFS code paths are not simple, so the suggestion is impractical anyway.
>
> Most of these checks are indeed generic. Those that arise from special
> filesystem invariants like not having unmapped buffers due to
> implementing ->page_mkwrite should for now be checked in the filesystem,
> although I'd like to make sure this is true for all filesystems
> long-term.
We use both PagePrivate and PageChecked differently to EXT3 etc.
>From the original example, that just leaves PageLocked, but lots of kernel
functions seem to check that, so why not UBIFS too?
next prev parent reply other threads:[~2008-04-30 7:09 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-27 14:55 [RFC PATCH] UBIFS - new flash file system Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 01/26] VFS: introduce writeback_inodes_sb() Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 02/26] UBIFS: add I/O sub-system Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 03/26] UBIFS: add flash scanning Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 04/26] UBIFS: add journal replay Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 05/26] UBIFS: add file-system build Artem Bityutskiy
2008-03-28 10:12 ` Andrew Morton
2008-03-28 11:04 ` Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 06/26] UBIFS: add superblock and master node Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 07/26] UBIFS: add file-system recovery Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 08/26] UBIFS: add compression support Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 09/26] UBIFS: add key helpers Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 10/26] UBIFS: add the journal Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 11/26] UBIFS: add commit functionality Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 12/26] UBIFS: add TNC implementation Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 13/26] UBIFS: add TNC commit implementation Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 14/26] UBIFS: add TNC shrinker Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 15/26] UBIFS: add LEB properties Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 16/26] UBIFS: add LEB properties tree Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 17/26] " Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 18/26] UBIFS: add LEB find subsystem Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 19/26] UBIFS: add Garbage Collector Artem Bityutskiy
2008-04-01 2:11 ` Arnd Bergmann
2008-03-27 14:55 ` [RFC PATCH 20/26] UBIFS: add VFS operations Artem Bityutskiy
2008-03-27 13:36 ` Andi Kleen
2008-03-27 13:42 ` Artem Bityutskiy
2008-04-01 12:08 ` Pekka Enberg
2008-04-01 12:42 ` Artem Bityutskiy
2008-04-01 13:12 ` Pekka Enberg
2008-04-01 14:04 ` Artem Bityutskiy
2008-04-01 15:14 ` Adrian Hunter
2008-03-27 14:55 ` [RFC PATCH 21/26] UBIFS: add budgeting Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 22/26] UBIFS: add extended attribute support Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 23/26] UBIFS: add orphans handling sub-system Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 24/26] UBIFS: add header files Artem Bityutskiy
2008-03-27 14:55 ` [RFC PATCH 25/26] UBIFS: add debugging stuff Artem Bityutskiy
2008-03-31 21:00 ` Pekka Enberg
2008-04-01 6:20 ` Artem Bityutskiy
2008-04-01 7:33 ` Pekka Enberg
2008-04-01 8:32 ` Artem Bityutskiy
2008-04-01 9:00 ` Pekka Enberg
2008-04-01 9:04 ` Artem Bityutskiy
2008-04-01 8:34 ` Adrian Hunter
2008-04-01 7:43 ` Pekka Enberg
2008-03-27 14:55 ` [RFC PATCH 26/26] UBIFS: include FS to compilation Artem Bityutskiy
2008-04-01 7:39 ` Pekka Enberg
2008-04-01 8:51 ` Artem Bityutskiy
2008-04-01 9:15 ` Pekka Enberg
2008-04-01 9:25 ` Artem Bityutskiy
2008-04-01 10:04 ` Pekka Enberg
2008-04-01 10:26 ` Artem Bityutskiy
2008-04-01 11:33 ` Pekka Enberg
2008-04-01 11:56 ` Artem Bityutskiy
2008-04-26 9:37 ` Christoph Hellwig
2008-04-28 7:10 ` Adrian Hunter
2008-04-28 9:03 ` ext Christoph Hellwig
2008-04-30 7:04 ` Adrian Hunter [this message]
2008-04-26 9:35 ` Christoph Hellwig
2008-04-28 7:09 ` Adrian Hunter
2008-04-28 9:00 ` ext Christoph Hellwig
2008-04-28 11:23 ` Adrian Hunter
2008-04-28 11:39 ` ext ext Christoph Hellwig
2008-04-28 12:25 ` Adrian Hunter
2008-04-28 13:02 ` Christoph Hellwig
2008-03-27 16:20 ` [RFC PATCH] UBIFS - new flash file system Josh Boyer
2008-03-28 6:17 ` Artem Bityutskiy
2008-03-28 6:45 ` Artem Bityutskiy
2008-03-31 12:29 ` Jan Engelhardt
2008-03-31 12:47 ` Adrian Hunter
2008-03-31 13:20 ` Jörn Engel
2008-03-31 14:00 ` Artem Bityutskiy
2008-03-31 17:17 ` Jörn Engel
2008-03-31 20:49 ` Pekka Enberg
2008-03-31 21:21 ` Jörn Engel
2008-04-01 6:00 ` Artem Bityutskiy
2008-04-01 5:26 ` UBIFS vs Logfs (was [RFC PATCH] UBIFS - new flash file system) Artem Bityutskiy
2008-04-01 5:28 ` Artem Bityutskiy
2008-04-01 5:56 ` Artem Bityutskiy
2008-04-01 9:25 ` Jörn Engel
2008-04-01 9:39 ` Artem Bityutskiy
2008-04-01 10:51 ` Jörn Engel
2008-04-01 11:17 ` Artem Bityutskiy
2008-04-01 9:19 ` Jörn Engel
2008-04-01 9:46 ` Artem Bityutskiy
2008-04-01 11:16 ` Jörn Engel
2008-03-31 13:40 ` [RFC PATCH] UBIFS - new flash file system Jörn Engel
2008-04-01 21:01 ` Matthieu CASTET
2008-04-03 7:07 ` Artem Bityutskiy
2008-04-18 9:05 ` Thomas Gleixner
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=481819E3.4070301@nokia.com \
--to=ext-adrian.hunter@nokia.com \
--cc=Artem.Bityutskiy@nokia.com \
--cc=dedekind@yandex.ru \
--cc=dwmw2@infradead.org \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=penberg@cs.helsinki.fi \
/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.