All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: Nick Piggin <npiggin@suse.de>
Cc: Andrew Morton <akpm@osdl.org>, Linus Torvalds <torvalds@osdl.org>,
	Linux Memory Management List <linux-mm@kvack.org>,
	Greg KH <gregkh@suse.de>
Subject: Re: [patch] mm: bug in set_page_dirty_buffers
Date: Tue, 10 Oct 2006 09:11:03 +0200	[thread overview]
Message-ID: <1160464263.27479.13.camel@taijtu> (raw)
In-Reply-To: <20061010065927.GA14557@wotan.suse.de>

On Tue, 2006-10-10 at 08:59 +0200, Nick Piggin wrote:
> On Tue, Oct 10, 2006 at 08:48:56AM +0200, Peter Zijlstra wrote:
> > On Tue, 2006-10-10 at 07:22 +0200, Nick Piggin wrote:
> > > 
> > > I disagree because it will lead to horrible hacks because many callers
> > > can't sleep. If anything I would much prefer an innermost-spinlock in
> > > page->flags that specifically excludes truncate. Actually tree_lock can
> > > do that now, provided we pin mapping in all callers to set_page_dirty
> > > (which we should do).
> > 
> > Yeah, but we're hard working to eradicate tree lock; I have ran into
> 
> Well yeah, but until then the tree_lock works.

True, and your latest patch looks nice, will have to go over it in more
than a cursory glance though.

> > this problem before; that is, zap_pte_range and co. not being able to
> > lock the page. I'd really like to see that fixed.
> 
> What's your problem with zap_pte_range?

well, not only zap_pte_range, also page_remove_rmap and
try_to_unmap_cluster etc.. Basically all those who fiddle with the page
without holding the page lock.

Because with concurrent pagecache, there is no tree lock anymore to
protect/pin the whole mapping, I need to go pin individual pages.
Perhaps having an inner page bit-spinlock (PG_pin) isn't a bad thing,
I'd just raised the issue to see if it would be doable/a-good-thing to
try and merge these two.

> > In my current concurrent pagecache patches I've abused your PG_nonewrefs
> > and made it this page internal (bit)spinlock, but it just doesn't look
> > nice to have both this lock and PG_locked.
> 
> Regardless of whether or not they spin, PG_locked is an outermost, and
> set_page_dirty is called innermost. 

Yes, indeed, and changing it is going to be hard and painful, hence I'll
stick with PG_pin for now.

> I don't see why we'd particularly
> want to mush them together now, just because we're worried a filesystem
> writer wrote buggy code.
> 
> It is all well and good to tell me I'm wrong unless I audit all
> filesystems, but the fact is that I'm not a filesystem expert, and if
> this is what it has come to then either the process has failed, or
> we have a large number of filesystems to cull from the tree as
> unmaintained.

With you on that, no/little filesystems knowledge here either.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2006-10-10  7:11 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-10  2:36 [patch] mm: bug in set_page_dirty_buffers Nick Piggin
2006-10-10  3:06 ` Linus Torvalds
2006-10-10  3:19   ` Nick Piggin
2006-10-10  3:20   ` Andrew Morton
2006-10-10  3:34     ` Nick Piggin
2006-10-10  3:50       ` Andrew Morton
2006-10-10  3:58         ` Nick Piggin
2006-10-10  4:14           ` Andrew Morton
2006-10-10  4:21             ` Nick Piggin
2006-10-10  4:38               ` Andrew Morton
2006-10-10  4:47                 ` Nick Piggin
2006-10-10  5:01                   ` Andrew Morton
2006-10-10  5:22                     ` Nick Piggin
2006-10-10  5:29                       ` Andrew Morton
2006-10-10  5:48                         ` Nick Piggin
2006-10-10  6:08                           ` Andrew Morton
2006-10-10  6:19                             ` Nick Piggin
2006-10-10  6:27                               ` Andrew Morton
2006-10-10  6:39                                 ` Nick Piggin
2006-10-10  6:52                                   ` Nick Piggin
2006-10-10  7:06                                     ` Andrew Morton
2006-10-10  7:21                                       ` Nick Piggin
2006-10-10  8:07                                         ` Andrew Morton
2006-10-10  8:18                                           ` Nick Piggin
2006-10-10  8:41                                             ` Andrew Morton
2006-10-10  8:49                                               ` Nick Piggin
2006-10-10  9:07                                                 ` Andrew Morton
2006-10-10  9:23                                                   ` Nick Piggin
2006-10-10  6:48                       ` Peter Zijlstra
2006-10-10  6:59                         ` Nick Piggin
2006-10-10  7:11                           ` Peter Zijlstra [this message]
2006-10-10  7:30                             ` Nick Piggin
2006-10-10  4:11         ` Nick Piggin
2006-10-10  3:37     ` Andrew Morton
2006-10-10  3:42       ` Nick Piggin
2006-10-10  7:42 ` patch mm-bug-in-set_page_dirty_buffers.patch queued to -stable tree gregkh

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=1160464263.27479.13.camel@taijtu \
    --to=a.p.zijlstra@chello.nl \
    --cc=akpm@osdl.org \
    --cc=gregkh@suse.de \
    --cc=linux-mm@kvack.org \
    --cc=npiggin@suse.de \
    --cc=torvalds@osdl.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 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.