From: Andrea Arcangeli <andrea@suse.de>
To: Linus Torvalds <torvalds@transmeta.com>
Cc: Kernel Mailing List <linux-kernel@vger.kernel.org>,
Alexander Viro <viro@math.psu.edu>
Subject: Re: linux-2.4.10-pre5
Date: Sun, 9 Sep 2001 03:38:48 +0200 [thread overview]
Message-ID: <20010909033848.J11329@athlon.random> (raw)
In-Reply-To: <20010909030913.G11329@athlon.random> <Pine.LNX.4.31.0109081811230.24270-100000@p4.transmeta.com>
In-Reply-To: <Pine.LNX.4.31.0109081811230.24270-100000@p4.transmeta.com>; from torvalds@transmeta.com on Sat, Sep 08, 2001 at 06:20:51PM -0700
On Sat, Sep 08, 2001 at 06:20:51PM -0700, Linus Torvalds wrote:
>
>
> On Sun, 9 Sep 2001, Andrea Arcangeli wrote:
> > >
> > > Hmm. And if two openers have the device open at the same time? One dirties
> >
> > of course I described what happens under the bdev semaphore at the very
> > latest release, so there is no "two" opener case here. If some reference
> > of the file is still open I don't even attempt to sync anything. (if the
> > user didn't asked for O_SYNC of course, in such a case the
> > generic_file_write would take care of it)
>
> That's also a bug.
it's not.
>
> So imagine that there is another user keeping the bdev active. Implying
> that you never even try to sync it at all. That sounds like a bad thing to
> do.
If you would be right it would also be a bug when two users keep open
the same file at the same time on any filesystem. Tell me where we do
the fsync of the file when the first user closes it.
The whole point is that the two users obviously are sharing the same
cache so there's no issue there.
The only case we need to care specially is the coherency between
filesystems and blkdev users and that's what I do with the algorithm
explained earlier.
> > > data after the first one has done __block_fsync? And the truncate will
> > > throw the dirtied page away?
> >
> > There can't be any truncate because the blkdev isn't a regular file.
>
> You said you used truncate_inode_pages(), which _does_ throw the pages
> away. Dirty or not.
I said I do __block_fsync and then truncate_inode_pages. By the time I
drop the pagecache on the blkdev inode I just committed all the changes
to disk, all the uptodate data is on disk then.
No other user can be messing under us because we're serialized by the
bdev semaphore.
> What I'm saying is that you at _every_ close (sane semantics for block
> devices really do expect the writes to be flushed by close time - how
> would they otherwise ever be flushed reliably?) do something like
We don't flush at every close even in current 2.4 buffercache backed.
Even more obviously when there's more than one fd open on the file when
->release isn't even recalled.
> fsync(inode);
> invalidate_inode_pages(inode);
> invalidate_device(inode->b_dev);
>
> and be done with it. That syncs the pages that we've dirtied, and it
> invalidates all pages that aren't pinned some way. Which is exactly what
> you want.
That's not enough.
> > that's definitely not enough, see the other issue mentioned by Andreas
> > in this thread, the reason I wrote the algorithm I explained in the
> > previous email is as first thing to eventually avoid infinite long fsck
> > of the root fs.
>
> Ehh? Why? The above writes back exactly the same thing that our current
> block filesystem writes back. While "invalidate_device()" also throws away
> all buffers that aren't pinned.
>
> And the superblock isn't in the buffer cache - it's cached separately, so
The superblock is cached in pinned buffer cache.
> invalidate_device() will throw away the buffer associated with it - to be
> re-read and re-written by the rw remount.
>
> Will it be different than the current behaviour wrt some other metadata?
> Yes. So you could make invalidate_device() stronger, trying to re-read
> buffers that aren't dirty. But that doesn't mean that you should act
> differently on FS mounted vs not-mounted vs some-other-user.
Trying to resync a rw mounted fs would corrupt the fs for example, we
definitely want to allow reads on a rw mounted fs, but we don't want to
corrupt the fs once we close, we cannot threat the two cases the same
way.
Also the only case where we need to do the synchronization of the caches
is the blkdev_close, so I don't think it makes sense to change the other
calls that are currently used by code that doesn't need to synchronize.
Andrea
next prev parent reply other threads:[~2001-09-09 1:38 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-09-08 4:18 linux-2.4.10-pre5 Linus Torvalds
2001-09-08 6:32 ` linux-2.4.10-pre5: drivers/net/wan compile fixes Eyal Lebedinsky
2001-09-08 6:36 ` 2.4.9-ac10 (not 2.4.10-pre5!) wan fixes Eyal Lebedinsky
2001-09-08 8:32 ` 2.4.10-pre5 compile error George Bonser
2001-09-08 17:19 ` linux-2.4.10-pre5 Andrea Arcangeli
2001-09-08 17:30 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-08 17:57 ` linux-2.4.10-pre5 Andrea Arcangeli
2001-09-08 18:01 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-09 1:09 ` linux-2.4.10-pre5 Andrea Arcangeli
2001-09-09 1:20 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-09 1:38 ` Andrea Arcangeli [this message]
2001-09-09 1:53 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-09 2:22 ` linux-2.4.10-pre5 Andrea Arcangeli
2001-09-09 2:31 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-09 3:30 ` linux-2.4.10-pre5 Andrea Arcangeli
2001-09-09 3:58 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-09 4:16 ` linux-2.4.10-pre5 Andrea Arcangeli
2001-09-09 4:28 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-09 12:09 ` linux-2.4.10-pre5 Rik van Riel
2001-09-09 14:53 ` linux-2.4.10-pre5 Andrea Arcangeli
2001-09-09 18:17 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-09 20:18 ` linux-2.4.10-pre5 H. Peter Anvin
2001-09-10 0:39 ` linux-2.4.10-pre5 Simon Kirby
2001-09-10 8:30 ` linux-2.4.10-pre5 Kai Henningsen
2001-09-11 5:29 ` linux-2.4.10-pre5 Peter Samuelson
2001-09-11 11:29 ` linux-2.4.10-pre5 Kai Henningsen
2001-09-10 21:22 ` linux-2.4.10-pre5 Stephen C. Tweedie
2001-09-09 14:47 ` linux-2.4.10-pre5 Andrea Arcangeli
2001-09-09 16:24 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-09 17:29 ` linux-2.4.10-pre5 Andrea Arcangeli
2001-09-09 23:56 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-09 4:29 ` linux-2.4.10-pre5 Andreas Dilger
2001-09-09 4:54 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-09 6:17 ` linux-2.4.10-pre5 Andreas Dilger
2001-09-09 17:31 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-09 19:19 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-09 23:24 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-09 23:54 ` linux-2.4.10-pre5 Alan Cox
2001-09-10 0:04 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-10 0:23 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-10 0:23 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-10 0:38 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-10 1:04 ` linux-2.4.10-pre5 Andrea Arcangeli
2001-09-10 1:45 ` linux-2.4.10-pre5 Chris Mason
2001-09-10 1:55 ` linux-2.4.10-pre5 Andrea Arcangeli
2001-09-10 2:02 ` linux-2.4.10-pre5 Chris Mason
2001-09-10 2:06 ` linux-2.4.10-pre5 Andrea Arcangeli
2001-09-10 2:15 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-10 2:22 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-10 2:20 ` linux-2.4.10-pre5 Chris Mason
2001-09-10 2:40 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-10 3:02 ` linux-2.4.10-pre5 Chris Mason
2001-09-10 3:36 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-10 19:06 ` linux-2.4.10-pre5 Chris Mason
2001-09-10 2:03 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-10 2:41 ` linux-2.4.10-pre5 Chris Mason
2001-09-10 21:18 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-10 21:23 ` linux-2.4.10-pre5 Alex Bligh - linux-kernel
2001-09-10 21:54 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-10 22:39 ` linux-2.4.10-pre5 Alex Bligh - linux-kernel
2001-09-10 23:13 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-10 23:25 ` linux-2.4.10-pre5 Alex Bligh - linux-kernel
2001-09-10 22:15 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-10 22:26 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-10 22:39 ` linux-2.4.10-pre5 Rik van Riel
2001-09-10 23:14 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-10 23:16 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-11 0:53 ` linux-2.4.10-pre5 Rik van Riel
2001-09-11 6:39 ` linux-2.4.10-pre5 Hua Zhong
2001-09-11 15:12 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-11 15:44 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-11 15:48 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-11 16:05 ` linux-2.4.10-pre5 Alex Bligh - linux-kernel
2001-09-11 16:07 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-11 16:07 ` linux-2.4.10-pre5 Alex Bligh - linux-kernel
2001-09-11 16:13 ` linux-2.4.10-pre5 Martin Dalecki
2001-09-11 17:17 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-11 10:02 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-11 20:07 ` linux-2.4.10-pre5 Rik van Riel
2001-09-10 23:20 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-11 0:20 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-11 1:16 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-11 2:27 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-11 7:45 ` linux-2.4.10-pre5 Helge Hafting
2001-09-11 10:27 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-11 15:39 ` linux-2.4.10-pre5 Linus Torvalds
2001-09-11 16:52 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-09 19:51 ` linux-2.4.10-pre5 Daniel Phillips
2001-09-09 9:05 ` linux-2.4.10-pre5 Christoph Hellwig
2001-09-09 13:14 ` linux-2.4.10-pre5 Anton Altaparmakov
2001-09-09 14:31 ` linux-2.4.10-pre5 Andrea Arcangeli
2001-09-08 21:15 ` linux-2.4.10-pre5 Andreas Dilger
2001-09-09 0:59 ` linux-2.4.10-pre5 Andrea Arcangeli
2001-09-08 22:01 ` linux-2.4.10-pre5 Thiago Vinhas de Moraes
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=20010909033848.J11329@athlon.random \
--to=andrea@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@transmeta.com \
--cc=viro@math.psu.edu \
/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