linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
To: pbonzini@redhat.com
Cc: david@fromorbit.com, mhocko@kernel.org,
	akpm@linux-foundation.org, glauber@scylladb.com,
	linux-mm@kvack.org, viro@zeniv.linux.org.uk, jack@suse.com,
	airlied@linux.ie, alexander.deucher@amd.com, shli@fb.com,
	snitzer@redhat.com
Subject: Re: [PATCH] mm,vmscan: Mark register_shrinker() as __must_check
Date: Thu, 23 Nov 2017 20:03:54 +0900	[thread overview]
Message-ID: <201711232003.DII64069.FQSLOtOFJMOVFH@I-love.SAKURA.ne.jp> (raw)
In-Reply-To: <83429cb3-4962-4a16-793e-42483a843c75@redhat.com>

Paolo Bonzini wrote:
> On 23/11/2017 10:56, Tetsuo Handa wrote:
> > Paolo Bonzini wrote:
> >> On 23/11/2017 07:34, Tetsuo Handa wrote:
> >>>> Just fix the numa aware shrinkers, as they are the only ones that
> >>>> will have this problem. There are only 6 of them, and only the 3
> >>>> that existed at the time that register_shrinker() was changed to
> >>>> return an error fail to check for an error. i.e. the superblock
> >>>> shrinker, the XFS dquot shrinker and the XFS buffer cache shrinker.
> >>>
> >>> You are assuming the "too small to fail" memory-allocation rule
> >>> by ignoring that this problem is caused by fault injection.
> >>
> >> Fault injection should also obey the too small to fail rule, at least by
> >> default.
> > 
> > Pardon? Most allocation requests in the kernel are <= 32KB.
> > Such change makes fault injection useless. ;-)
> 
> But if these calls are "too small to fail", you are injecting a fault on
> something that cannot fail anyway.  Unless you're aiming at removing
> "too small to fail", then I understand.
> 

The "too small to fail" does not mean that small allocations cannot fail.
It unlikely fails because it will retry forever unless killed as an OOM victim,
and currently we allow it to try memory allocation from memory reserves when
killed as an OOM victim. But such assumption is fragile. We unexpectedly
forget to allow it to try memory allocation from memory reserves (e.g. commit 
c288983dddf71421 ("mm/page_alloc.c: make sure OOM victim can try allocations
with no watermarks once")). There is no guarantee that small allocations
will not fail in future.

To me, using __GFP_NOFAIL for register_shrinker() sounds the simplest fix.
Adding error handling code to all register_shrinker() callers is not worth
bothering. In most runtime environments, kmalloc() in register_shrinker()
will be order 0.

--
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:[~2017-11-23 11:05 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-21 12:02 Tetsuo Handa
2017-11-21 21:40 ` Andrew Morton
2017-11-21 22:09   ` Tetsuo Handa
2017-11-22 10:53     ` Tetsuo Handa
2017-11-22 12:45       ` Michal Hocko
2017-11-22 13:06         ` Tetsuo Handa
2017-11-22 14:31           ` Paolo Bonzini
2017-11-22 14:36             ` Michal Hocko
2017-11-22 20:39       ` Dave Chinner
2017-11-23  6:34         ` Tetsuo Handa
2017-11-23  8:02           ` Michal Hocko
2017-11-23  9:21           ` Paolo Bonzini
2017-11-23  9:56             ` Tetsuo Handa
2017-11-23 10:02               ` Michal Hocko
2017-11-23 10:38                 ` Tetsuo Handa
2017-11-23 10:43               ` Paolo Bonzini
2017-11-23 11:03                 ` Tetsuo Handa [this message]
2017-11-22 12:33     ` Michal Hocko

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=201711232003.DII64069.FQSLOtOFJMOVFH@I-love.SAKURA.ne.jp \
    --to=penguin-kernel@i-love.sakura.ne.jp \
    --cc=airlied@linux.ie \
    --cc=akpm@linux-foundation.org \
    --cc=alexander.deucher@amd.com \
    --cc=david@fromorbit.com \
    --cc=glauber@scylladb.com \
    --cc=jack@suse.com \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=shli@fb.com \
    --cc=snitzer@redhat.com \
    --cc=viro@zeniv.linux.org.uk \
    /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