From: Petr Tesarik <ptesarik@suse.cz>
To: Jan Kara <jack@suse.cz>
Cc: Hugh Dickins <hughd@google.com>, Mel Gorman <mgorman@suse.de>,
linux-mm@kvack.org
Subject: Re: Does swap_set_page_dirty() calling ->set_page_dirty() make sense?
Date: Tue, 18 Sep 2012 10:51:50 +0200 [thread overview]
Message-ID: <201209181051.50541.ptesarik@suse.cz> (raw)
In-Reply-To: <20120918021627.GF9150@quack.suse.cz>
Dne Út 18. září 2012 04:16:27 Jan Kara napsal(a):
> On Mon 17-09-12 12:15:46, Hugh Dickins wrote:
> > On Mon, 17 Sep 2012, Jan Kara wrote:
> > > I tripped over a crash in reiserfs which happened due to
> > > PageSwapCache
> > >
> > > page being passed to reiserfs_set_page_dirty(). Now it's not that hard
> > > to make reiserfs_set_page_dirty() check that case but I really wonder:
> > > Does it make sense to call mapping->a_ops->set_page_dirty() for a
> > > PageSwapCache page? The page is going to be written via direct IO so
> > > from the POV of the filesystem there's no need for any dirtiness
> > > tracking. Also there are several ->set_page_dirty() implementations
> > > which will spectacularly crash because they do things like
> > > page->mapping->host, or call
> > > __set_page_dirty_buffers() which expects buffer heads in page->private.
> > > Or what is the reason for calling filesystem's set_page_dirty()
> > > function?
> >
> > This is a question for Mel, really: it used not to call the filesystem.
> >
> > But my reading of the 3.6 code says that it still will not call the
> > filesystem, unless the filesystem (only nfs) provides a swap_activate
> > method, which should be the only case in which SWP_FILE gets set.
> > And I rather think Mel does want to use the filesystem set_page_dirty
> > in that case. Am I misreading?
> >
> > Did you see this on a vanilla kernel? Or is it possible that you have
> > a private patch merged in, with something else sharing the SWP_FILE bit
> > (defined in include/linux/swap.h) by mistake?
>
> Argh, sorry. It is indeed a SLES specific bug. I missed that SWP_FILE bit
> gets set only when swap_activate() is provided (SLES code works a bit
> differently in this area but I wasn't really looking into that since I was
> focused elsewhere).
>
> So just one minor nit for Mel. SWP_FILE looks like a bit confusing name for
> a flag that gets set only for some swap files ;) At least I didn't pay
> attention to it because I thought it's set for all of them. Maybe call it
> SWP_FILE_CALL_AOPS or something like that?
Same here. In fact, I believed that other filesystems only work by accident
(because they don't have to access the mapping). I'm not even sure about the
semantics of the swap_activate operation. Is this documented somewhere?
Petr Tesarik
SUSE Linux
--
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>
next prev parent reply other threads:[~2012-09-18 8:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-17 16:35 Jan Kara
2012-09-17 19:15 ` Hugh Dickins
2012-09-18 2:16 ` Jan Kara
2012-09-18 8:51 ` Petr Tesarik [this message]
2012-09-18 10:02 ` Mel Gorman
2012-09-18 9:58 ` Mel Gorman
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=201209181051.50541.ptesarik@suse.cz \
--to=ptesarik@suse.cz \
--cc=hughd@google.com \
--cc=jack@suse.cz \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
/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