From: "Jörn Engel" <joern@logfs.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Christoph Hellwig <hch@infradead.org>,
linux-mtd@lists.infradead.org,
David Woodhouse <dwmw2@infradead.org>,
linux-kernel@vger.kernel.org, Jens Axboe <jens.axboe@oracle.com>
Subject: Re: [PATCH] [MTD] Fix JFFS2 sync silent failure
Date: Thu, 22 Apr 2010 08:26:31 +0200 [thread overview]
Message-ID: <20100422062631.GC27309@logfs.org> (raw)
In-Reply-To: <20100422055448.GA27309@logfs.org>
Linus,
I think this is bad enough that you should be involved. 32a88aa1 broke
a number of filesystems in a way that sync() would return 0 without
doing any work. Even politicians are better at keeping the promises.
This is caused by the two-liner in __sync_filesystem:
if (!sb->s_bdi)
return 0;
s_bdi is set implicitly for all filesystems using set_bdev_super(), so
most block device based filesystems are safe. There are, however, a
number of odd-balls around:
On Thu, 22 April 2010 07:54:48 +0200, Jörn Engel wrote:
>
> 9p no s_bdi
> afs no s_bdi
> ceph creates its own s_bdi
> cifs no s_bdi
> coda no s_bdi
> ecryptfs no s_bdi
> exofs no s_bdi
> fuse creates its own s_bdi?
> gfs2 creates its own s_bdi?
> jffs2 patch exists
> logfs fixed now
> ncpfs no s_bdi
> nfs creates its own s_bdi
> ocfs2 no s_bdi
> smbfs no s_bdi
> ubifs creates its own s_bdi
Obviously this list should get checked and all affected filesystems get
repaired. Additionally we should add an assertion and BUG() or refuse
to mount or something. My original patch to that extend was this:
diff --git a/fs/super.c b/fs/super.c
index f35ac60..e8af253 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -954,6 +954,8 @@ vfs_kern_mount(struct file_system_type *type, int flags, const char *name, void
if (error < 0)
goto out_free_secdata;
BUG_ON(!mnt->mnt_sb);
+ BUG_ON(!mnt->mnt_sb->s_bdi &&
+ (mnt->mnt_sb->s_bdev || mnt->mnt_sb->s_mtd));
error = security_sb_kern_mount(mnt->mnt_sb, flags, secdata);
if (error)
goto out_sb;
The real problem is finding a condition that has neither false positives
nor false negatives. The "(mnt->mnt_sb->s_bdev || mnt->mnt_sb->s_mtd)"
part takes care of false positives like tmpfs, but it would catch none
of the network filesystems. Should we instead annotate tmpfs and friends
with something like sb->s_dont_need_bdi? It is the only way I can think
of not to miss something.
Jörn
--
People will accept your ideas much more readily if you tell them
that Benjamin Franklin said it first.
-- unknown
next prev parent reply other threads:[~2010-04-22 6:26 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-17 18:40 [PATCH] [MTD] Fix JFFS2 sync silent failure Jörn Engel
2010-04-19 7:38 ` Jens Axboe
2010-04-19 10:15 ` Jörn Engel
2010-04-19 10:20 ` Jens Axboe
2010-04-19 11:39 ` Jörn Engel
2010-04-22 5:54 ` Jörn Engel
2010-04-22 6:26 ` Jörn Engel [this message]
2010-04-22 14:25 ` Linus Torvalds
2010-04-22 14:33 ` Linus Torvalds
2010-04-22 16:27 ` Jens Axboe
2010-04-22 20:33 ` [Patch] Catch filesystems lacking s_bdi Jörn Engel
2010-04-23 10:05 ` Jens Axboe
2010-04-23 20:55 ` Jörn Engel
2010-04-26 9:48 ` Jens Axboe
2010-04-26 14:32 ` Jörn Engel
2010-04-26 14:38 ` Jens Axboe
2010-04-26 14:45 ` Jens Axboe
2010-04-26 16:30 ` [PATCH 1/2] [MTD] Move mtd_bdi_*mappable to mtdcore.c Jörn Engel
2010-04-26 16:31 ` [PATCH 2/2] [MTD] Call bdi_init() and bdi_register() Jörn Engel
2010-04-26 17:02 ` Jens Axboe
2010-04-26 17:12 ` Jörn Engel
2010-04-27 7:52 ` Jens Axboe
2010-04-27 8:11 ` Paolo Minazzi
2010-04-27 8:16 ` Jens Axboe
2010-04-27 11:29 ` Jörn Engel
2010-04-27 11:33 ` Jens Axboe
2010-04-27 9:01 ` Paolo Minazzi
2010-04-27 9:16 ` Jens Axboe
2010-04-27 9:26 ` Paolo Minazzi
2010-04-27 9:29 ` Jens Axboe
2010-04-27 9:36 ` Paolo Minazzi
2010-04-27 11:17 ` Jörn Engel
2010-04-27 11:31 ` Paolo Minazzi
2010-04-27 11:40 ` Jörn Engel
2010-04-27 11:48 ` [PATCH] [LogFS] Return -EINVAL if filesystem image doesn't match Jörn Engel
2010-04-27 12:53 ` Paolo Minazzi
2010-04-27 11:54 ` [PATCH 2/2] [MTD] Call bdi_init() and bdi_register() Paolo Minazzi
2010-04-27 12:05 ` Jörn Engel
2010-04-26 17:01 ` [PATCH 1/2] [MTD] Move mtd_bdi_*mappable to mtdcore.c Jens Axboe
2010-04-26 17:08 ` Jörn Engel
2010-04-26 17:10 ` Jens Axboe
2010-04-22 9:03 ` [PATCH] [MTD] Fix JFFS2 sync silent failure Jens Axboe
2010-04-22 10:39 ` Jens Axboe
2010-04-22 10:58 ` David Woodhouse
2010-04-22 11:05 ` Jens Axboe
2010-04-22 11:55 ` Jörn Engel
2010-04-22 12:08 ` Jens Axboe
2010-04-22 12:17 ` Jörn Engel
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=20100422062631.GC27309@logfs.org \
--to=joern@logfs.org \
--cc=dwmw2@infradead.org \
--cc=hch@infradead.org \
--cc=jens.axboe@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.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).