linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@osdl.org>
To: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Segher Boessenkool <segher@kernel.crashing.org>,
	David Miller <davem@davemloft.net>,
	kenneth.w.chen@intel.com, guichaz@yahoo.fr, hugh@veritas.com,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	ranma@tdiedrich.de, gordonfarquharson@gmail.com,
	Andrew Morton <akpm@osdl.org>,
	a.p.zijlstra@chello.nl, tbm@cyrius.com, arjan@infradead.org,
	andrei.popa@i-neo.ro
Subject: Re: Ok, explained.. (was Re: [PATCH] mm: fix page_mkclean_one)
Date: Fri, 29 Dec 2006 09:25:27 -0800 (PST)	[thread overview]
Message-ID: <Pine.LNX.4.64.0612290915420.4473@woody.osdl.org> (raw)
In-Reply-To: <45950561.6040508@yahoo.com.au>



On Fri, 29 Dec 2006, Nick Piggin wrote:
> 
> > It still has a tiny tiny race (see the comment), but I bet nobody can really
> > hit it in real life anyway, and I know several ways to fix it, so I'm not
> > really _that_ worried about it.
> 
> Well the race isn't a data loss one, is it? Just a case where the
> pte may be dirty but the page dirty state not accounted for.

Right. We should be picking it up eventually, since it's still in the page 
tables, but if we've lost sight of the page dirtyness we won't react 
correctly to msync() and/or fdatasync(). So we don't _lose_ the data, we 
just might not write it out in a timely manner if we ever hit the race.

> Can we fix it by just putting the page_mkclean back inside the
> TestClearPageDirty check, and re-clearing PG_dirty after redoing
> the set_page_dirty?

I considered it, but quite frankly, if we did it that way, I'd really like 
to just fix the whole insane "set_page_dirty()" instead.

I think set_page_dirty() should be split up. One thing that confused me 
mentally was that almost all of the dirty handling was actualyl done only 
if PG_dirty wasn't already set, so the _bulk_ of set_page_dirty() really 
ends up being

	if (!TestSetPageDirty(page)) {
		.. we just marked the page dirty, it was clean before,
		   so we need to add it to the queues etc ..
	}

and that's the part that I (and probably others) always really thought 
about.

But then we have the _one_ thing that runs outside of that "do only once 
per dirty bit" logic, and it's the buffer dirtying. If we had had two 
separate operations for this all: "set_dirty_every_time()" and the regular 
"set_dirty()", I don't think this would have been nearly as confusing.

(And then the difference between "__set_page_dirty_nobuffers()" and 
"__set_page_dirty_buffers()" really boils down to one doing the 
"everytime" _and_ the "once per dirty" checks and the other one doing just 
the "once per dirty bit" act - and we could rename the damn things to 
something saner too).

If we split it up that way, then the whole clear_page_dirty_for_io() logic 
would boil down to

	if (TestClearPageDirty(page)) {
		if (page_mkclean(page))
			set_dirty_every_time();
		return 1;
	}
	return 0;

and we wouldn't even need to do any of the "clear dirty again" kind of 
idiocy, because the "set_dirty_every_time()" stuff is the one that doesn't 
even care about the state of the PG_dirty bit - it's done regardless, and 
doesn't really touch it.

That's what I wanted to do, but with the current "set_page_dirty()" setup, 
I think my patch makes reasonable sense.

		Linus

  reply	other threads:[~2006-12-29 17:26 UTC|newest]

Thread overview: 311+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-17  0:13 2.6.19 file content corruption on ext3 Andrei Popa
2006-12-17 12:06 ` Andrew Morton
2006-12-17 12:19   ` Marc Haber
2006-12-17 12:32   ` Andrei Popa
2006-12-17 13:39   ` Andrei Popa
2006-12-17 23:40     ` Andrew Morton
2006-12-18  1:02       ` Linus Torvalds
2006-12-18  1:22       ` Linus Torvalds
2006-12-18  1:29         ` Linus Torvalds
2006-12-18  1:57           ` Linus Torvalds
2006-12-18  4:51             ` Nick Piggin
2006-12-18  5:43               ` Andrew Morton
2006-12-18  7:22                 ` Nick Piggin
2006-12-18  9:18                   ` Andrew Morton
2006-12-18  9:26                     ` Andrei Popa
2006-12-18  9:42                     ` Nick Piggin
2006-12-19  8:51                 ` Marc Haber
2006-12-19  9:28                   ` Martin Michlmayr
2006-12-28 18:05                   ` Marc Haber
2006-12-28 19:00                     ` Linus Torvalds
2006-12-28 19:05                       ` Petri Kaukasoina
2006-12-28 19:21                         ` Linus Torvalds
2006-12-28 19:39                           ` Dave Jones
2006-12-28 20:10                             ` Arjan van de Ven
2006-12-29  9:23                             ` maximilian attems
2006-12-29 15:02                               ` Dave Jones
2006-12-29 18:52                                 ` maximilian attems
2006-12-29 19:14                                   ` Dave Jones
2006-12-28 21:24                       ` Linus Torvalds
2006-12-28 21:36                         ` Russell King
2006-12-28 22:37                         ` Linus Torvalds
2006-12-28 22:50                           ` David Miller
2006-12-28 23:01                             ` Linus Torvalds
2006-12-29  1:38                             ` Linus Torvalds
2006-12-29  1:59                               ` Andrew Morton
2006-12-28 23:36                           ` Anton Altaparmakov
2006-12-28 23:54                             ` Linus Torvalds
2006-12-29 17:49                       ` Guillaume Chazarain
2006-12-18  5:50               ` Linus Torvalds
2006-12-18  7:16                 ` Andrew Morton
2006-12-18  7:17                   ` Andrew Morton
2006-12-18  9:30                   ` Nick Piggin
2006-12-18  7:30                 ` Nick Piggin
2006-12-18  9:19                 ` Andrei Popa
2006-12-18  9:38                   ` Andrew Morton
2006-12-18 10:00                     ` Andrei Popa
2006-12-18 10:11                       ` Peter Zijlstra
2006-12-18 10:49                         ` Andrei Popa
2006-12-18 15:24                           ` Gene Heskett
2006-12-18 15:32                             ` Peter Zijlstra
2006-12-18 15:47                               ` Gene Heskett
2006-12-18 16:55       ` Peter Zijlstra
2006-12-18 18:03         ` Linus Torvalds
2006-12-18 18:24           ` Peter Zijlstra
2006-12-18 18:35             ` Linus Torvalds
2006-12-18 19:04               ` Andrei Popa
2006-12-18 19:10                 ` Peter Zijlstra
2006-12-18 19:18                 ` Linus Torvalds
2006-12-18 19:44                   ` Andrei Popa
2006-12-18 20:14                     ` Linus Torvalds
2006-12-18 20:41                       ` Linus Torvalds
2006-12-18 21:11                         ` Andrei Popa
2006-12-18 22:00                           ` Alessandro Suardi
2006-12-18 22:45                             ` Linus Torvalds
2006-12-19  0:13                               ` Andrei Popa
2006-12-19  0:29                                 ` Linus Torvalds
2006-12-18 22:32                           ` Linus Torvalds
2006-12-18 23:48                             ` Andrei Popa
2006-12-19  0:04                               ` Linus Torvalds
2006-12-19  0:29                                 ` Andrei Popa
2006-12-19  0:57                                   ` Linus Torvalds
2006-12-19  1:21                                     ` Andrew Morton
2006-12-19  1:44                                       ` Andrei Popa
2006-12-19  1:54                                         ` Andrew Morton
2006-12-19  2:04                                           ` Andrei Popa
2006-12-19  8:05                                           ` Andrei Popa
2006-12-19  8:24                                             ` Andrew Morton
2006-12-19  8:34                                               ` Pekka Enberg
2006-12-19  9:13                                               ` Marc Haber
2006-12-19  1:50                                     ` Andrei Popa
2006-12-19  1:03                               ` Gene Heskett
2006-12-18 22:34                         ` Gene Heskett
2006-12-22 17:27                           ` Linus Torvalds
2006-12-18 21:43                       ` Andrew Morton
2006-12-18 21:49                       ` Peter Zijlstra
2006-12-19 23:42                       ` Peter Zijlstra
2006-12-20  0:23                         ` Linus Torvalds
2006-12-20  9:01                           ` Peter Zijlstra
2006-12-20  9:12                             ` Peter Zijlstra
2006-12-20  9:39                             ` Arjan van de Ven
2006-12-20 11:26                               ` [PATCH] mm: fix page_mkclean_one (was: 2.6.19 file content corruption on ext3) Peter Zijlstra
2006-12-20 11:39                                 ` Jesper Juhl
2006-12-20 11:42                                   ` Peter Zijlstra
2006-12-20 12:12                                     ` Jesper Juhl
2006-12-20 13:00                                 ` Hugh Dickins
2006-12-20 13:56                                   ` Peter Zijlstra
2006-12-20 17:03                                     ` Martin Michlmayr
2006-12-20 17:35                                       ` Linus Torvalds
2006-12-20 17:53                                         ` Martin Michlmayr
2006-12-20 19:01                                           ` Linus Torvalds
2006-12-20 19:50                                             ` Linus Torvalds
2006-12-20 20:22                                               ` Peter Zijlstra
2006-12-20 21:55                                               ` Dave Kleikamp
2006-12-20 22:25                                                 ` Linus Torvalds
2006-12-20 22:59                                                   ` Dave Kleikamp
2006-12-20 22:15                                               ` Peter Zijlstra
2006-12-20 22:20                                                 ` Peter Zijlstra
2006-12-20 22:49                                                 ` Linus Torvalds
2006-12-20 23:03                                                   ` Peter Zijlstra
2006-12-21  9:16                                                     ` Martin Schwidefsky
2006-12-21  9:20                                                       ` Peter Zijlstra
2006-12-21  9:26                                                         ` Martin Schwidefsky
2006-12-21 20:01                                                         ` Linus Torvalds
2006-12-28  0:00                                                           ` Martin Schwidefsky
2006-12-28  0:42                                                             ` Linus Torvalds
2006-12-28  0:52                                                               ` [PATCH] mm: fix page_mkclean_one David Miller
2006-12-21  2:36                                                 ` [PATCH] mm: fix page_mkclean_one (was: 2.6.19 file content corruption on ext3) Trond Myklebust
2006-12-21  8:10                                                   ` Peter Zijlstra
2006-12-20 23:24                                               ` David Chinner
2006-12-20 23:55                                                 ` Linus Torvalds
2006-12-21  1:20                                                   ` David Chinner
2006-12-20 23:32                                               ` Andrew Morton
2006-12-20 23:55                                                 ` Linus Torvalds
2006-12-21  0:11                                                   ` Andrew Morton
2006-12-21  0:22                                                     ` Linus Torvalds
2006-12-21  0:24                                                       ` Linus Torvalds
2006-12-21 15:48                                                         ` Andrei Popa
2006-12-21 16:58                                                           ` Linus Torvalds
2006-12-21  0:43                                                       ` Linus Torvalds
2006-12-21  1:20                                                         ` Andrew Morton
2006-12-21  2:54                                                   ` Trond Myklebust
2006-12-21 17:19                                                     ` Linus Torvalds
2006-12-21  7:32                                               ` Gordon Farquharson
2006-12-21  7:53                                                 ` Linus Torvalds
2006-12-21  8:38                                                   ` Martin Michlmayr
2006-12-21  8:59                                                     ` Linus Torvalds
2006-12-21  9:17                                                   ` Gordon Farquharson
2006-12-21  9:27                                                     ` Andrew Morton
2006-12-22  4:20                                                       ` Gordon Farquharson
2006-12-22  4:54                                                         ` Linus Torvalds
2006-12-22 10:00                                                           ` Martin Michlmayr
2006-12-22 10:06                                                             ` Martin Michlmayr
2006-12-22 10:10                                                               ` Martin Michlmayr
2006-12-22 11:07                                                                 ` Martin Michlmayr
2006-12-22 15:30                                                                 ` Gordon Farquharson
2006-12-22 17:11                                                                   ` Martin Michlmayr
2006-12-22 10:17                                                             ` Andrew Morton
2006-12-22 11:12                                                               ` Martin Michlmayr
2006-12-22 12:24                                                               ` Andrei Popa
2006-12-22 12:32                                                                 ` Martin Michlmayr
2006-12-22 12:59                                                                   ` Martin Michlmayr
2006-12-22 13:25                                                                     ` Peter Zijlstra
2006-12-22 13:29                                                                       ` Peter Zijlstra
2006-12-22 17:56                                                                       ` Linus Torvalds
2006-12-22 19:20                                                                       ` Martin Michlmayr
2006-12-24  8:10                                                                         ` Gordon Farquharson
2006-12-24  8:43                                                                           ` Linus Torvalds
2006-12-24  8:57                                                                             ` Andrew Morton
2006-12-24  9:26                                                                               ` Linus Torvalds
2006-12-24 12:14                                                                               ` Andrei Popa
2006-12-24 12:26                                                                                 ` Andrei Popa
2006-12-24 12:30                                                                                   ` Andrew Morton
2006-12-24 12:31                                                                                 ` Andrew Morton
2006-12-24 16:45                                                                                   ` Andrei Popa
2006-12-24 17:16                                                                                     ` Linus Torvalds
2006-12-24 18:07                                                                                       ` Andrew Morton
2006-12-24 18:37                                                                                       ` Linus Torvalds
2006-12-24 19:18                                                                                         ` Linus Torvalds
2006-12-24 20:55                                                                                           ` Gordon Farquharson
2006-12-26 10:31                                                                                           ` Nick Piggin
2006-12-26 19:26                                                                                             ` Linus Torvalds
2006-12-27 12:32                                                                                               ` Jari Sundell
2006-12-27 12:44                                                                                               ` valdyn
2006-12-27 13:33                                                                                                 ` Jari Sundell
2007-01-07  2:06                                                                                               ` Tom Lanyon
2007-01-07  5:58                                                                                                 ` Tom Lanyon
2007-01-07  6:05                                                                                                 ` Andrew Morton
2006-12-24 21:21                                                                                         ` Michael S. Tsirkin
2006-12-24 19:27                                                                                       ` Gordon Farquharson
2006-12-24 19:35                                                                                         ` Linus Torvalds
2006-12-24 20:10                                                                                           ` Andrei Popa
2006-12-24 20:24                                                                                             ` Linus Torvalds
2006-12-24 20:30                                                                                               ` Andrei Popa
2006-12-26 17:51                                                                                               ` Al Viro
2006-12-26 17:58                                                                                                 ` Al Viro
2006-12-24 22:01                                                                                           ` Martin Michlmayr
2006-12-24 14:05                                                                               ` Martin Michlmayr
2006-12-26 16:17                                                                             ` Tobias Diedrich
2006-12-27  4:55                                                                               ` [PATCH] mm: fix page_mkclean_one David Miller
2006-12-27  7:00                                                                                 ` Linus Torvalds
2006-12-27  8:39                                                                                   ` Andrei Popa
2006-12-28  0:16                                                                                 ` Linus Torvalds
2006-12-28  0:39                                                                                   ` Linus Torvalds
2006-12-28  0:52                                                                                     ` David Miller
2006-12-28  3:04                                                                                       ` Linus Torvalds
2006-12-28  4:32                                                                                         ` Gordon Farquharson
2006-12-28  4:53                                                                                           ` Linus Torvalds
2006-12-28  5:20                                                                                             ` Gordon Farquharson
2006-12-28  5:41                                                                                               ` David Miller
2006-12-28  5:47                                                                                                 ` Gordon Farquharson
2006-12-28 10:13                                                                                               ` Russell King
2006-12-28 14:15                                                                                                 ` Gordon Farquharson
2006-12-28 15:53                                                                                                   ` Martin Michlmayr
2006-12-28 17:27                                                                                                 ` Linus Torvalds
2006-12-28 18:44                                                                                                   ` Russell King
2006-12-28 19:01                                                                                                     ` Linus Torvalds
     [not found]                                                                                             ` <97a0a9ac0612272115g4cce1f08n3c3c8498a6076bd5@mail.gmail.com>
     [not found]                                                                                               ` <Pine.LNX.4.64.0612272120180.4473@woody.osdl.org>
2006-12-28  5:38                                                                                                 ` Gordon Farquharson
2006-12-28  9:30                                                                                                   ` Martin Michlmayr
2006-12-28 10:16                                                                                                   ` Martin Michlmayr
2006-12-28 10:49                                                                                                     ` Russell King
2006-12-28 14:56                                                                                                       ` Martin Michlmayr
2006-12-28  5:58                                                                                                 ` Gordon Farquharson
2006-12-28 17:08                                                                                                   ` Linus Torvalds
2006-12-28  5:55                                                                                         ` Chen, Kenneth W
2006-12-28  6:10                                                                                           ` Chen, Kenneth W
2006-12-28  6:27                                                                                             ` David Miller
2006-12-28 17:10                                                                                             ` Linus Torvalds
2006-12-28  9:15                                                                                         ` Zhang, Yanmin
2006-12-28 17:15                                                                                           ` Linus Torvalds
2006-12-28 11:50                                                                                         ` Petri Kaukasoina
2006-12-28 15:09                                                                                         ` Guillaume Chazarain
2006-12-28 19:19                                                                                           ` Guillaume Chazarain
2006-12-28 19:28                                                                                             ` Linus Torvalds
2006-12-28 19:45                                                                                               ` Andrew Morton
2006-12-28 20:14                                                                                                 ` Linus Torvalds
2006-12-28 22:38                                                                                                   ` David Miller
2006-12-29  2:50                                                                                                     ` Segher Boessenkool
2006-12-29  6:48                                                                                                       ` Linus Torvalds
2006-12-29  8:58                                                                                                         ` Ok, explained.. (was Re: [PATCH] mm: fix page_mkclean_one) Linus Torvalds
2006-12-29 10:48                                                                                                           ` Linus Torvalds
2006-12-29 11:16                                                                                                             ` Andrei Popa
2006-12-29 12:09                                                                                                             ` Nick Piggin
2006-12-29 17:25                                                                                                               ` Linus Torvalds [this message]
2006-12-29 12:31                                                                                                             ` Ingo Molnar
2006-12-29 13:08                                                                                                             ` Martin Johansson
2006-12-29 14:08                                                                                                             ` Martin Michlmayr
2006-12-29 15:17                                                                                                               ` Stephen Clark
2006-12-29 15:54                                                                                                                 ` Martin Michlmayr
2006-12-29 22:16                                                                                                             ` Andrew Morton
2006-12-29 22:24                                                                                                               ` Andrew Morton
2006-12-29 22:42                                                                                                               ` Linus Torvalds
2006-12-29 23:32                                                                                                                 ` Theodore Tso
2006-12-29 23:59                                                                                                                   ` Linus Torvalds
2006-12-30  0:05                                                                                                                   ` Andrew Morton
2006-12-30  0:50                                                                                                                     ` Linus Torvalds
2006-12-29 23:51                                                                                                                 ` Andrew Morton
2006-12-30  0:11                                                                                                                   ` Linus Torvalds
2006-12-30  0:33                                                                                                                     ` Andrew Morton
2006-12-30  0:58                                                                                                                       ` Linus Torvalds
2006-12-30  1:16                                                                                                                         ` Andrew Morton
2006-12-29 15:27                                                                                                           ` Theodore Tso
2006-12-29 17:51                                                                                                             ` Linus Torvalds
2006-12-29 12:19                                                                                                         ` [patch] fix data corruption bug in __block_write_full_page() Ingo Molnar
2007-01-02 11:20                                                                                                           ` Christoph Hellwig
2007-01-02 12:06                                                                                                             ` Ingo Molnar
2007-01-02 12:16                                                                                                               ` Christoph Hellwig
2006-12-28 22:35                                                                                                 ` [PATCH] mm: fix page_mkclean_one Mike Galbraith
2006-12-22 15:01                                                                   ` [PATCH] mm: fix page_mkclean_one (was: 2.6.19 file content corruption on ext3) Patrick Mau
2006-12-23  8:15                                                                   ` Andrei Popa
2006-12-22 15:08                                                           ` Gordon Farquharson
2006-12-22 10:01                                                         ` Martin Michlmayr
2006-12-22 15:16                                                           ` Gordon Farquharson
2006-12-21 12:30                                                   ` Russell King
2006-12-21 12:36                                                     ` Russell King
2006-12-21 11:21                                               ` Martin Michlmayr
2006-12-20 22:11                                       ` Russell King
2006-12-21  8:18                                         ` Martin Michlmayr
2006-12-21  9:54                                           ` Russell King
2006-12-20 14:55                                 ` Martin Schwidefsky
2006-12-20 14:27                             ` 2.6.19 file content corruption on ext3 Martin Schwidefsky
2006-12-20  9:32                           ` Peter Zijlstra
2006-12-20 14:15                         ` Andrei Popa
2006-12-20 14:23                           ` Peter Zijlstra
2006-12-20 16:30                             ` Andrei Popa
2006-12-20 16:36                               ` Peter Zijlstra
2006-12-19  7:38                   ` Peter Zijlstra
2006-12-19  4:36           ` Nick Piggin
2006-12-19  6:34             ` Linus Torvalds
2006-12-19  6:51               ` Nick Piggin
2006-12-19  7:26                 ` Linus Torvalds
2006-12-19  8:04                   ` Linus Torvalds
2006-12-19  9:00                     ` Peter Zijlstra
2006-12-19  9:05                       ` Peter Zijlstra
     [not found]                     ` <4587B762.2030603@yahoo.com.au>
2006-12-19 10:32                       ` Andrew Morton
2006-12-19 10:42                         ` Nick Piggin
2006-12-19 10:47                         ` Andrew Morton
2006-12-19 10:52                         ` Peter Zijlstra
2006-12-19 10:58                           ` Nick Piggin
2006-12-19 11:51                             ` Peter Zijlstra
2006-12-19 10:55                         ` Nick Piggin
2006-12-19 16:51                       ` Linus Torvalds
2006-12-19 17:43                         ` Linus Torvalds
2006-12-19 18:59                           ` Linus Torvalds
2006-12-19 21:30                             ` Peter Zijlstra
2006-12-19 22:51                               ` Linus Torvalds
2006-12-19 22:58                                 ` Andrew Morton
2006-12-19 23:06                                   ` Peter Zijlstra
2006-12-19 23:07                                     ` Peter Zijlstra
2006-12-20  0:03                                     ` Linus Torvalds
2006-12-20  0:18                                       ` Andrew Morton
2006-12-20 18:02                               ` Stephen Clark
2006-12-20  5:56                             ` Jari Sundell
2006-12-19 21:56                           ` Florian Weimer
2006-12-21 13:03                           ` Peter Zijlstra
2006-12-21 20:40                             ` Andrew Morton
2006-12-19 20:03               ` dean gaudet
2006-12-19  7:22             ` Peter Zijlstra
2006-12-19  7:59               ` Nick Piggin
2006-12-19  8:14                 ` Linus Torvalds
2006-12-19  9:40                   ` Nick Piggin
2006-12-19 16:46                     ` Linus Torvalds

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=Pine.LNX.4.64.0612290915420.4473@woody.osdl.org \
    --to=torvalds@osdl.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@osdl.org \
    --cc=andrei.popa@i-neo.ro \
    --cc=arjan@infradead.org \
    --cc=davem@davemloft.net \
    --cc=gordonfarquharson@gmail.com \
    --cc=guichaz@yahoo.fr \
    --cc=hugh@veritas.com \
    --cc=kenneth.w.chen@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nickpiggin@yahoo.com.au \
    --cc=ranma@tdiedrich.de \
    --cc=segher@kernel.crashing.org \
    --cc=tbm@cyrius.com \
    /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).