All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Hocko <mhocko@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Davidlohr Bueso <dave@stgolabs.net>,
	Andrew Morton <akpm@linux-foundation.org>,
	Thomas Graf <tgraf@suug.ch>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	Manfred Spraul <manfred@colorfullife.com>,
	guillaume.knispel@supersonicimagine.com,
	Linux API <linux-api@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Davidlohr Bueso <dbueso@suse.de>
Subject: Re: [PATCH 3/6] lib/bucket_locks: use kvmalloc_array()
Date: Tue, 29 May 2018 16:43:17 +0200	[thread overview]
Message-ID: <20180529144317.GA20910@dhcp22.suse.cz> (raw)
In-Reply-To: <CA+55aFxvNCEBQsxfr=yL3jgxiC8M8wY2MHwVBH+T8qSWyP-WPg@mail.gmail.com>

On Thu 24-05-18 14:37:36, Linus Torvalds wrote:
> On Thu, May 24, 2018 at 2:28 PM Davidlohr Bueso <dave@stgolabs.net> wrote:
> 
> >                  if (gfpflags_allow_blocking(gfp))
> > -                       tlocks = kvmalloc(size * sizeof(spinlock_t), gfp);
> > +                       tlocks = kvmalloc_array(size, sizeof(spinlock_t),
> gfp);
> >                  else
> >                          tlocks = kmalloc_array(size, sizeof(spinlock_t),
> gfp);
> 
> Side note: how about we just move that "gfpflags_allow_blocking()" into
> kvmalloc() instead, and make kvmalloc() generally usable?
> 
> Now we have that really odd situation where kvmalloc() takes gfp flags, but
> to quote the comment:
> 
>   * Any use of gfp flags outside of GFP_KERNEL should be consulted with mm
> people.
> 
> and the code:
> 
>          /*
>           * vmalloc uses GFP_KERNEL for some internal allocations (e.g page
> tables)
>           * so the given set of flags has to be compatible.
>           */
>          WARN_ON_ONCE((flags & GFP_KERNEL) != GFP_KERNEL);
> 
> which isn't really all that helpful. Do mm people really want to be
> consulted about random uses?

The purpose was to have a clean usage base after the conversion. If we
are growing a non-trivial use base which wants to use GFP_NOWAIT semantic
then sure we can make kvmalloc never fallback to vmallock. But see
below...

> Maybe we could just make the rule for kvmalloc() be to only fall back on
> vmalloc for allocations that are
> 
>   - larger than page size
> 
>   - blocking and allow GFP_KERNEL (so basically that WARN_ON_ONCE() logic in
> kvmalloc_node).
> 
> Hmm? Isn't that what everybody really *wants* kvmalloc() and friends to do?

... Well, there are users who would like to use kvmalloc for
GFP_NOFS/GFP_NOIO context. Do we want them to fail more likely for
larger order rather than have them fixed (to either drop the NOFS
because it just has been blindly copied from a different code without
too much thinking or use the scope NOFS/NOIO API)? A warn_on tends to be
rather harsh but effective way to push maintainers fix their broken
code...
-- 
Michal Hocko
SUSE Labs

  reply	other threads:[~2018-05-29 14:43 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-24 21:11 [PATCH -next 0/6] rhashtable: guarantee first allocation Davidlohr Bueso
2018-05-24 21:11 ` [PATCH 1/6] lib/rhashtable: convert param sanitations to WARN_ON Davidlohr Bueso
2018-05-28  9:40   ` Herbert Xu
2018-05-28 13:12     ` Davidlohr Bueso
2018-05-28 15:54       ` Herbert Xu
2018-05-28 15:51         ` Davidlohr Bueso
2018-05-24 21:11 ` [PATCH 2/6] lib/rhashtable: guarantee initial hashtable allocation Davidlohr Bueso
2018-05-25  3:26   ` Davidlohr Bueso
2018-05-28  9:49   ` Herbert Xu
2018-05-29 17:03     ` Davidlohr Bueso
2018-05-29 18:04       ` Herbert Xu
2018-05-29 17:59         ` Davidlohr Bueso
2018-05-29 18:27           ` Herbert Xu
2018-05-30 14:29             ` Davidlohr Bueso
2018-05-28 10:02   ` Herbert Xu
2018-05-29 16:42     ` Davidlohr Bueso
2018-05-29 18:03       ` Herbert Xu
2018-05-29 17:55         ` Davidlohr Bueso
2018-05-29 18:15           ` Herbert Xu
2018-05-29 18:05             ` Davidlohr Bueso
2018-05-24 21:11 ` [PATCH 3/6] lib/bucket_locks: use kvmalloc_array() Davidlohr Bueso
2018-05-24 21:37   ` Linus Torvalds
2018-05-29 14:43     ` Michal Hocko [this message]
2018-05-29 14:51       ` Michal Hocko
2018-05-29 20:46         ` Linus Torvalds
2018-05-30  7:42           ` Michal Hocko
2018-05-31 15:01             ` Linus Torvalds
2018-05-31 15:29               ` Michal Hocko
2018-05-24 21:11 ` [PATCH 4/6] ipc: get rid of ids->tables_initialized hack Davidlohr Bueso
2018-05-24 21:11 ` [PATCH 5/6] ipc: simplify ipc initialization Davidlohr Bueso
2018-05-24 21:11 ` [PATCH 6/6] lib/test_rhashtable: rhashtable_init() can no longer fail Davidlohr Bueso
2018-05-24 21:41 ` [PATCH -next 0/6] rhashtable: guarantee first allocation Linus Torvalds
2018-05-25  3:34   ` Davidlohr Bueso

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=20180529144317.GA20910@dhcp22.suse.cz \
    --to=mhocko@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=dave@stgolabs.net \
    --cc=dbueso@suse.de \
    --cc=guillaume.knispel@supersonicimagine.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=manfred@colorfullife.com \
    --cc=tgraf@suug.ch \
    --cc=torvalds@linux-foundation.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.