All of lore.kernel.org
 help / color / mirror / Atom feed
From: Minchan Kim <minchan@kernel.org>
To: Christian Brauner <christian.brauner@ubuntu.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Vlastimil Babka <vbabka@suse.cz>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-mm <linux-mm@kvack.org>,
	linux-api@vger.kernel.org, oleksandr@redhat.com,
	Suren Baghdasaryan <surenb@google.com>,
	Tim Murray <timmurray@google.com>,
	Daniel Colascione <dancol@google.com>,
	Sandeep Patil <sspatil@google.com>,
	Sonny Rao <sonnyrao@google.com>,
	Brian Geffon <bgeffon@google.com>, Michal Hocko <mhocko@suse.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Shakeel Butt <shakeelb@google.com>,
	John Dias <joaodias@google.com>,
	Joel Fernandes <joel@joelfernandes.org>,
	Jann Horn <jannh@google.com>,
	alexander.h.duyck@linux.intel.com, sj38.park@gmail.com,
	Christian Brauner <christian@brauner.io>,
	Kirill Tkhai <ktkhai@virtuozzo.com>
Subject: Re: [PATCH v7 5/7] mm: support both pid and pidfd for process_madvise
Date: Sat, 9 May 2020 16:14:41 -0700	[thread overview]
Message-ID: <20200509231441.GC61301@google.com> (raw)
In-Reply-To: <20200509124817.xmrvsrq3mla6b76k@wittgenstein>

Hi Christian,

On Sat, May 09, 2020 at 02:48:17PM +0200, Christian Brauner wrote:
> On Fri, May 08, 2020 at 04:04:15PM -0700, Andrew Morton wrote:
> > On Fri, 8 May 2020 11:36:53 -0700 Minchan Kim <minchan@kernel.org> wrote:
> > 
> > > 
> > > ...
> > >
> > > Per Vlastimil's request, I changed "which and advise" with "idtype and
> > > advice" in function prototype of description.
> > > Could you replace the part in the description? Code is never changed.
> > > 
> > 
> > Done, but...
> > 
> > >
> > > ...
> > >
> > > There is a demand[1] to support pid as well pidfd for process_madvise to
> > > reduce unnecessary syscall to get pidfd if the user has control of the
> > > target process(ie, they could guarantee the process is not gone or pid is
> > > not reused).
> > > 
> > > This patch aims for supporting both options like waitid(2).  So, the
> > > syscall is currently,
> > > 
> > >         int process_madvise(idtype_t idtype, id_t id, void *addr,
> > >                 size_t length, int advice, unsigned long flags);
> > > 
> > > @which is actually idtype_t for userspace libray and currently, it
> > > supports P_PID and P_PIDFD.
> > 
> > What does "@which is actually idtype_t for userspace libray" mean?  Can
> > you clarify and expand?
> 
> If I may clarify, the only case where we've supported both pidfd and pid
> in the same system call is waitid() to avoid adding a dedicated system
> call for waiting and because waitid() already had this (imho insane)
> argument type switching. The idtype_t thing comes from waitid() and is
> located int sys/wait.h and is defined as
> 
> "The type idtype_t is defined as an enumeration type whose possible
> values include at least the following:
> 
> P_ALL
> P_PID
> P_PGID
> "
> 
> int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options);
> If idtype is P_PID, waitid() shall wait for the child with a process ID equal to (pid_t)id.
> If idtype is P_PGID, waitid() shall wait for any child with a process group ID equal to (pid_t)id.
> If idtype is P_ALL, waitid() shall wait for any children and id is ignored.
> 
> I'm personally not a fan of this idtype_t thing and think this should
> just have been 
> > >         int pidfd_madvise(int pidfd, void *addr,
> > >                 size_t length, int advice, unsigned long flags);
> and call it a day.

That was the argument at that time, Daniel and I didn't want to have
pid along with pidfd even though Kirill strongly wanted to have it.
However you said " Overall, I don't particularly care how or if you
integrate pidfd here." at that time.

https://lore.kernel.org/linux-mm/20200113104256.5ujbplyec2sk4onn@wittgenstein/

I asked a question to Kirll at that time.

"
> Sounds like that you want to support both options for every upcoming API
> which deals with pid. I'm not sure how it's critical for process_madvise
> API this case. In general, we sacrifice some performance for the nicer one
> and later, once it's reported as hurdle for some workload, we could fix it
> via introducing new flag. What I don't like at this moment is to make
> syscall complicated with potential scenarios without real workload.

Yes, I suggest allowing both options for every new process api
"
https://lore.kernel.org/linux-mm/9d849087-3359-c4ab-fbec-859e8186c509@virtuozzo.com/

You didn't give the opinion at that time, either(I expected you will
make some voice then). What I could do to proceed work was separate it
as different patch like this one to get more attention in future.
And now it works.

Let me clarify my side: I still don't like to introduce pid for new API
since we have pidfd. Since you just brought this issue again, I want to
hear *opinions* from others, again.

> 
> Also, if I may ask, why is the flag argument "unsigned long"?
> That's pretty unorthodox. The expectation is that flag arguments are
> not word-size dependent and should usually use "unsigned int". All new
> system calls follow this pattern too.

Nothing special in this flag: Let me change it as "unsigned int".
I will send the change once we have an agreement on "pidfd" argument.

Thanks for the review, Christian!

  reply	other threads:[~2020-05-09 23:14 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-02 19:36 [PATCH v7 0/7] introduce memory hinting API for external process Minchan Kim
2020-03-02 19:36 ` [PATCH v7 1/7] mm: pass task and mm to do_madvise Minchan Kim
2020-03-05 15:48   ` Vlastimil Babka
2020-05-08 18:21     ` Minchan Kim
2020-03-02 19:36 ` [PATCH v7 2/7] mm: introduce external memory hinting API Minchan Kim
2020-03-03 10:33   ` kbuild test robot
2020-03-03 10:33     ` kbuild test robot
2020-03-03 14:57     ` Minchan Kim
2020-03-03 14:57       ` Minchan Kim
2020-03-05 18:15   ` Vlastimil Babka
2020-03-10 22:20     ` Minchan Kim
2020-03-11  0:36       ` Minchan Kim
2020-03-12 12:40       ` Vlastimil Babka
2020-03-12 20:23         ` Minchan Kim
2020-05-08 18:33           ` Minchan Kim
2020-03-02 19:36 ` [PATCH v7 3/7] mm: check fatal signal pending of target process Minchan Kim
2020-03-06 10:22   ` Vlastimil Babka
2020-03-10 22:24     ` Minchan Kim
2020-03-02 19:36 ` [PATCH v7 4/7] pid: move pidfd_get_pid function to pid.c Minchan Kim
2020-03-06 10:57   ` Vlastimil Babka
2020-03-06 11:14   ` Christian Brauner
2020-03-02 19:36 ` [PATCH v7 5/7] mm: support both pid and pidfd for process_madvise Minchan Kim
2020-03-06 11:14   ` Vlastimil Babka
2020-03-11  0:42     ` Minchan Kim
2020-05-08 18:36       ` Minchan Kim
2020-05-08 23:04         ` Andrew Morton
2020-05-09 12:48           ` Christian Brauner
2020-05-09 23:14             ` Minchan Kim [this message]
2020-05-12 19:55               ` Suren Baghdasaryan
2020-05-12 19:55                 ` Suren Baghdasaryan
2020-03-02 19:36 ` [PATCH v7 6/7] mm/madvise: employ mmget_still_valid for write lock Minchan Kim
2020-03-06 12:52   ` Vlastimil Babka
2020-03-06 13:03     ` Oleksandr Natalenko
2020-03-06 16:03       ` Vlastimil Babka
2020-03-09 12:30         ` Oleksandr Natalenko
2020-03-10 22:28           ` Minchan Kim
2020-03-02 19:36 ` [PATCH v7 7/7] mm/madvise: allow KSM hints for remote API Minchan Kim
2020-03-06 13:13   ` Vlastimil Babka
2020-03-06 13:41     ` Oleksandr Natalenko
2020-03-06 16:08       ` Vlastimil Babka
2020-03-09 13:11         ` Oleksandr Natalenko
2020-03-09 15:08           ` Michal Hocko
2020-03-09 15:19             ` Oleksandr Natalenko
2020-03-09 15:42               ` Vlastimil Babka
2020-03-09 16:03                 ` Michal Hocko
2020-06-11  2:21   ` Jann Horn
2020-06-11  2:21     ` Jann Horn
2020-03-02 21:16 ` [PATCH v7 0/7] introduce memory hinting API for external process Andrew Morton
2020-03-02 21:42   ` Minchan Kim

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=20200509231441.GC61301@google.com \
    --to=minchan@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=alexander.h.duyck@linux.intel.com \
    --cc=bgeffon@google.com \
    --cc=christian.brauner@ubuntu.com \
    --cc=christian@brauner.io \
    --cc=dancol@google.com \
    --cc=hannes@cmpxchg.org \
    --cc=jannh@google.com \
    --cc=joaodias@google.com \
    --cc=joel@joelfernandes.org \
    --cc=ktkhai@virtuozzo.com \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.com \
    --cc=oleksandr@redhat.com \
    --cc=shakeelb@google.com \
    --cc=sj38.park@gmail.com \
    --cc=sonnyrao@google.com \
    --cc=sspatil@google.com \
    --cc=surenb@google.com \
    --cc=timmurray@google.com \
    --cc=vbabka@suse.cz \
    /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.