From: Ted Ts'o <tytso@mit.edu>
To: David Rientjes <rientjes@google.com>
Cc: Jan Kara <jack@suse.cz>,
Andrew Morton <akpm@linux-foundation.org>,
Andreas Dilger <adilger@sun.com>, Jiri Kosina <jkosina@suse.cz>,
linux-mm@kvack.org
Subject: Re: [patch 6/6] jbd2: remove dependency on __GFP_NOFAIL
Date: Thu, 22 Jul 2010 10:14:37 -0400 [thread overview]
Message-ID: <20100722141437.GA14882@thunk.org> (raw)
In-Reply-To: <alpine.DEB.2.00.1007201943340.8728@chino.kir.corp.google.com>
On Tue, Jul 20, 2010 at 07:45:10PM -0700, David Rientjes wrote:
> The kzalloc() in start_this_handle() is failable, so remove __GFP_NOFAIL
> from its mask.
Unfortunately, while there is error handling in start_this_handle(),
there isn't in all of the callers of start_this_handle(), which is why
the __GFP_NOFAIL is there. At the moment, if we get an ENOMEM in the
delayed writeback code paths, for example, it's a disaster; user data
can get lost, as a result.
I could add retry code in the places where we really can't fail, and
reflect the change back up to the userspace code everywhere else, but
that will take a while to do, and even then it means that any VFS
syscall (chmod, unlink, rmdir, mkdir, read, close, etc.) would now
potentially return ENOMEM. And we know how often application
programmers do error checking....
But until we fix up all of the callers of jbd2_journal_start() and
jbd2_journal_restart(), I'd prefer keep this __GFP_NOFAIL in place,
thanks.
- Ted
P.S. There may also be some places where we haven't taken locks yet,
and so it might be safe in a few locations to omit the GFP_NOFS flag.
That would mean adding a new version of jbd2_journal_start() which can
take a gfp_mask, but the net result would be a file system that would
be a little bit more of a "good citizen" as far as allowing memory
reclaim. I am worried about reflecting ENOMEM errors back up to
userspace, though, since I'm painfully aware of how much crappy
userspace code is out there. What might be nice is a
"__GFP_RETRY_HARDER" which is weaker form of __GFP_NOFAIL...
--
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:[~2010-07-22 14:14 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-21 2:44 [patch 0/6] remove dependency on __GFP_NOFAIL for failable allocations David Rientjes
2010-07-21 2:44 ` [patch 1/6] sparc: remove dependency on __GFP_NOFAIL David Rientjes
2010-07-21 3:31 ` David Miller
2010-07-21 9:41 ` David Rientjes
2010-07-21 2:44 ` [patch 2/6] infiniband: " David Rientjes
2010-07-21 3:19 ` Steve Wise
2010-07-21 17:55 ` Roland Dreier
2010-07-21 2:45 ` [patch 3/6] fs: " David Rientjes
2010-07-23 19:36 ` Andrew Morton
2010-07-23 19:51 ` David Rientjes
2010-07-23 21:12 ` Pekka Enberg
2010-07-21 2:45 ` [patch 4/6] gfs2: " David Rientjes
2010-07-21 9:24 ` Steven Whitehouse
2010-07-21 9:31 ` David Rientjes
2010-07-21 2:45 ` [patch 6/6] jbd2: " David Rientjes
2010-07-22 14:14 ` Ted Ts'o [this message]
2010-07-22 18:09 ` David Rientjes
2010-07-22 23:09 ` Ted Ts'o
2010-07-22 23:24 ` David Rientjes
2010-07-23 14:10 ` Ted Ts'o
2010-07-23 14:57 ` Jan Kara
2010-07-23 15:05 ` Ted Ts'o
2010-07-23 15:32 ` Jan Kara
2010-07-23 19:40 ` David Rientjes
2010-07-23 19:52 ` Ted Ts'o
2010-07-21 19:26 ` [patch 5/6] jbd: " David Rientjes
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=20100722141437.GA14882@thunk.org \
--to=tytso@mit.edu \
--cc=adilger@sun.com \
--cc=akpm@linux-foundation.org \
--cc=jack@suse.cz \
--cc=jkosina@suse.cz \
--cc=linux-mm@kvack.org \
--cc=rientjes@google.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