linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] prctl.2: doc PR_SET/GET_IO_FLUSHER - V4
@ 2020-04-02  2:08 Mike Christie
  2020-04-02  3:46 ` Bart Van Assche
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Mike Christie @ 2020-04-02  2:08 UTC (permalink / raw)
  To: linux-api, david, mhocko, masato.suzuki, damien.lemoal,
	darrick.wong, bvanassche, mtk.manpages, linux-man
  Cc: Mike Christie

This patch documents the PR_SET_IO_FLUSHER and PR_GET_IO_FLUSHER
prctl commands added to the linux kernel for 5.6 in commit:

commit 8d19f1c8e1937baf74e1962aae9f90fa3aeab463
Author: Mike Christie <mchristi@redhat.com>
Date:   Mon Nov 11 18:19:00 2019 -0600

    prctl: PR_{G,S}ET_IO_FLUSHER to support controlling memory reclaim

Signed-off-by: Mike Christie <mchristi@redhat.com>
---

V4:
- Remove internal details.
- Add CAP_SYS_RESOURCE requirement info.

V3:
- Replace emulation device example.

V2:
- My initial patch for this was very bad. This version is almost 100%
taken word for word from Dave Chinner's review comments.

Signed-off-by: Mike Christie <mchristi@redhat.com>

 man2/prctl.2 | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/man2/prctl.2 b/man2/prctl.2
index 720ec04e4..3c3355439 100644
--- a/man2/prctl.2
+++ b/man2/prctl.2
@@ -1381,6 +1381,31 @@ system call on Tru64).
 for information on versions and architectures.)
 Return unaligned access control bits, in the location pointed to by
 .IR "(unsigned int\ *) arg2" .
+.TP
+.B PR_SET_IO_FLUSHER (Since Linux 5.6)
+If a user process is involved in the block layer or file system IO path,
+and can allocate memory while processing IO requests it must set
+\fIarg2\fP to 1. This will put the process in the IO_FLUSHER state which
+allows it special treatment to make progress when allocating memory.
+If \fIarg2\fP is 0, the process will clear the IO_FLUSHER state, and
+the default behavior will be used.
+
+The calling process must have the
+.BR CAP_SYS_RESOURCE
+capability.
+
+Examples of IO_FLUSHER applications are FUSE daemons, SCSI device
+emulation daemons, and daemons that perform error handling like multipath
+path recovery applications.
+
+.TP
+.B PR_GET_IO_FLUSHER (Since Linux 5.6)
+Return as the function result 1 if the caller is in the IO_FLUSHER state and
+0 if not.
+
+The calling process must have the
+.BR CAP_SYS_RESOURCE
+capability.
 .SH RETURN VALUE
 On success,
 .BR PR_GET_DUMPABLE ,
@@ -1395,6 +1420,7 @@ On success,
 .BR PR_GET_SPECULATION_CTRL ,
 .BR PR_MCE_KILL_GET ,
 .BR PR_CAP_AMBIENT + PR_CAP_AMBIENT_IS_SET ,
+.BR PR_GET_IO_FLUSHER ,
 and (if it returns)
 .BR PR_GET_SECCOMP
 return the nonnegative values described above.
-- 
2.21.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH] prctl.2: doc PR_SET/GET_IO_FLUSHER - V4
  2020-04-02  2:08 [PATCH] prctl.2: doc PR_SET/GET_IO_FLUSHER - V4 Mike Christie
@ 2020-04-02  3:46 ` Bart Van Assche
  2020-04-02 12:16   ` Michael Kerrisk (man-pages)
  2020-04-02 14:01   ` Michael Christie
  2020-04-02  6:47 ` Michal Hocko
  2020-04-02 12:16 ` Michael Kerrisk (man-pages)
  2 siblings, 2 replies; 10+ messages in thread
From: Bart Van Assche @ 2020-04-02  3:46 UTC (permalink / raw)
  To: Mike Christie, linux-api, david, mhocko, masato.suzuki,
	damien.lemoal, darrick.wong, mtk.manpages, linux-man

On 2020-04-01 19:08, Mike Christie wrote:
> +.TP
> +.B PR_GET_IO_FLUSHER (Since Linux 5.6)
> +Return as the function result 1 if the caller is in the IO_FLUSHER state and
> +0 if not.

Although I'm not at all a language expert, the word order at the start
of the above sentence seems a bit weird to me?

Thanks,

Bart.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] prctl.2: doc PR_SET/GET_IO_FLUSHER - V4
  2020-04-02  2:08 [PATCH] prctl.2: doc PR_SET/GET_IO_FLUSHER - V4 Mike Christie
  2020-04-02  3:46 ` Bart Van Assche
@ 2020-04-02  6:47 ` Michal Hocko
  2020-04-02 12:16   ` Michael Kerrisk (man-pages)
  2020-04-02 12:16 ` Michael Kerrisk (man-pages)
  2 siblings, 1 reply; 10+ messages in thread
From: Michal Hocko @ 2020-04-02  6:47 UTC (permalink / raw)
  To: Mike Christie
  Cc: linux-api, david, masato.suzuki, damien.lemoal, darrick.wong,
	bvanassche, mtk.manpages, linux-man

On Wed 01-04-20 21:08:50, Mike Christie wrote:
> This patch documents the PR_SET_IO_FLUSHER and PR_GET_IO_FLUSHER
> prctl commands added to the linux kernel for 5.6 in commit:
> 
> commit 8d19f1c8e1937baf74e1962aae9f90fa3aeab463
> Author: Mike Christie <mchristi@redhat.com>
> Date:   Mon Nov 11 18:19:00 2019 -0600
> 
>     prctl: PR_{G,S}ET_IO_FLUSHER to support controlling memory reclaim
> 
> Signed-off-by: Mike Christie <mchristi@redhat.com>

Yes this wording is much better than the previous version.

Acked-by: Michal Hocko <mhocko@suse.com>

> ---
> 
> V4:
> - Remove internal details.
> - Add CAP_SYS_RESOURCE requirement info.
> 
> V3:
> - Replace emulation device example.
> 
> V2:
> - My initial patch for this was very bad. This version is almost 100%
> taken word for word from Dave Chinner's review comments.
> 
> Signed-off-by: Mike Christie <mchristi@redhat.com>
> 
>  man2/prctl.2 | 26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)
> 
> diff --git a/man2/prctl.2 b/man2/prctl.2
> index 720ec04e4..3c3355439 100644
> --- a/man2/prctl.2
> +++ b/man2/prctl.2
> @@ -1381,6 +1381,31 @@ system call on Tru64).
>  for information on versions and architectures.)
>  Return unaligned access control bits, in the location pointed to by
>  .IR "(unsigned int\ *) arg2" .
> +.TP
> +.B PR_SET_IO_FLUSHER (Since Linux 5.6)
> +If a user process is involved in the block layer or file system IO path,
> +and can allocate memory while processing IO requests it must set
> +\fIarg2\fP to 1. This will put the process in the IO_FLUSHER state which
> +allows it special treatment to make progress when allocating memory.
> +If \fIarg2\fP is 0, the process will clear the IO_FLUSHER state, and
> +the default behavior will be used.
> +
> +The calling process must have the
> +.BR CAP_SYS_RESOURCE
> +capability.
> +
> +Examples of IO_FLUSHER applications are FUSE daemons, SCSI device
> +emulation daemons, and daemons that perform error handling like multipath
> +path recovery applications.
> +
> +.TP
> +.B PR_GET_IO_FLUSHER (Since Linux 5.6)
> +Return as the function result 1 if the caller is in the IO_FLUSHER state and
> +0 if not.
> +
> +The calling process must have the
> +.BR CAP_SYS_RESOURCE
> +capability.
>  .SH RETURN VALUE
>  On success,
>  .BR PR_GET_DUMPABLE ,
> @@ -1395,6 +1420,7 @@ On success,
>  .BR PR_GET_SPECULATION_CTRL ,
>  .BR PR_MCE_KILL_GET ,
>  .BR PR_CAP_AMBIENT + PR_CAP_AMBIENT_IS_SET ,
> +.BR PR_GET_IO_FLUSHER ,
>  and (if it returns)
>  .BR PR_GET_SECCOMP
>  return the nonnegative values described above.
> -- 
> 2.21.0

-- 
Michal Hocko
SUSE Labs

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] prctl.2: doc PR_SET/GET_IO_FLUSHER - V4
  2020-04-02  2:08 [PATCH] prctl.2: doc PR_SET/GET_IO_FLUSHER - V4 Mike Christie
  2020-04-02  3:46 ` Bart Van Assche
  2020-04-02  6:47 ` Michal Hocko
@ 2020-04-02 12:16 ` Michael Kerrisk (man-pages)
  2020-04-04 21:07   ` Mike Christie
  2 siblings, 1 reply; 10+ messages in thread
From: Michael Kerrisk (man-pages) @ 2020-04-02 12:16 UTC (permalink / raw)
  To: Mike Christie, linux-api, david, mhocko, masato.suzuki,
	damien.lemoal, darrick.wong, bvanassche, linux-man
  Cc: mtk.manpages

Hello Mike,

On 4/2/20 4:08 AM, Mike Christie wrote:
> This patch documents the PR_SET_IO_FLUSHER and PR_GET_IO_FLUSHER
> prctl commands added to the linux kernel for 5.6 in commit:
> 
> commit 8d19f1c8e1937baf74e1962aae9f90fa3aeab463
> Author: Mike Christie <mchristi@redhat.com>
> Date:   Mon Nov 11 18:19:00 2019 -0600> 
>     prctl: PR_{G,S}ET_IO_FLUSHER to support controlling memory reclaim
> 
> Signed-off-by: Mike Christie <mchristi@redhat.com>

I've applied this patch, but I have some questions:

(a) What happens to the IO_FLUSHER setting in the child of fork(2)?
(b) What happens to the IO_FLUSHER setting during an execve(2)?
    (Is it preserved, reset, something else?)

Thanks,

Michael

> ---
> 
> V4:
> - Remove internal details.
> - Add CAP_SYS_RESOURCE requirement info.
> 
> V3:
> - Replace emulation device example.
> 
> V2:
> - My initial patch for this was very bad. This version is almost 100%
> taken word for word from Dave Chinner's review comments.
> 
> Signed-off-by: Mike Christie <mchristi@redhat.com>
> 
>  man2/prctl.2 | 26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)
> 
> diff --git a/man2/prctl.2 b/man2/prctl.2
> index 720ec04e4..3c3355439 100644
> --- a/man2/prctl.2
> +++ b/man2/prctl.2
> @@ -1381,6 +1381,31 @@ system call on Tru64).
>  for information on versions and architectures.)
>  Return unaligned access control bits, in the location pointed to by
>  .IR "(unsigned int\ *) arg2" .
> +.TP
> +.B PR_SET_IO_FLUSHER (Since Linux 5.6)
> +If a user process is involved in the block layer or file system IO path,
> +and can allocate memory while processing IO requests it must set
> +\fIarg2\fP to 1. This will put the process in the IO_FLUSHER state which
> +allows it special treatment to make progress when allocating memory.
> +If \fIarg2\fP is 0, the process will clear the IO_FLUSHER state, and
> +the default behavior will be used.
> +
> +The calling process must have the
> +.BR CAP_SYS_RESOURCE
> +capability.
> +
> +Examples of IO_FLUSHER applications are FUSE daemons, SCSI device
> +emulation daemons, and daemons that perform error handling like multipath
> +path recovery applications.
> +
> +.TP
> +.B PR_GET_IO_FLUSHER (Since Linux 5.6)
> +Return as the function result 1 if the caller is in the IO_FLUSHER state and
> +0 if not.
> +
> +The calling process must have the
> +.BR CAP_SYS_RESOURCE
> +capability.
>  .SH RETURN VALUE
>  On success,
>  .BR PR_GET_DUMPABLE ,
> @@ -1395,6 +1420,7 @@ On success,
>  .BR PR_GET_SPECULATION_CTRL ,
>  .BR PR_MCE_KILL_GET ,
>  .BR PR_CAP_AMBIENT + PR_CAP_AMBIENT_IS_SET ,
> +.BR PR_GET_IO_FLUSHER ,
>  and (if it returns)
>  .BR PR_GET_SECCOMP
>  return the nonnegative values described above.
> 


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] prctl.2: doc PR_SET/GET_IO_FLUSHER - V4
  2020-04-02  3:46 ` Bart Van Assche
@ 2020-04-02 12:16   ` Michael Kerrisk (man-pages)
  2020-04-02 14:01   ` Michael Christie
  1 sibling, 0 replies; 10+ messages in thread
From: Michael Kerrisk (man-pages) @ 2020-04-02 12:16 UTC (permalink / raw)
  To: Bart Van Assche, Mike Christie, linux-api, david, mhocko,
	masato.suzuki, damien.lemoal, darrick.wong, linux-man
  Cc: mtk.manpages

On 4/2/20 5:46 AM, Bart Van Assche wrote:
> On 2020-04-01 19:08, Mike Christie wrote:
>> +.TP
>> +.B PR_GET_IO_FLUSHER (Since Linux 5.6)
>> +Return as the function result 1 if the caller is in the IO_FLUSHER state and
>> +0 if not.
> 
> Although I'm not at all a language expert, the word order at the start
> of the above sentence seems a bit weird to me?

Thanks for spotting that Bart. I changed the text to:

              If a user  process  is  involved  in  the  block  layer  or
              filesystem I/O path, and can allocate memory while process‐
              ing I/O requests it must set arg2 to 1.  This will put  the
              process  in  the  IO_FLUSHER state, which allows it special
              treatment to make progress when allocating memory.  If arg2
              is  0, the process will clear the IO_FLUSHER state, and the
              default behavior will be used.

Cheers,

Michael


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] prctl.2: doc PR_SET/GET_IO_FLUSHER - V4
  2020-04-02  6:47 ` Michal Hocko
@ 2020-04-02 12:16   ` Michael Kerrisk (man-pages)
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Kerrisk (man-pages) @ 2020-04-02 12:16 UTC (permalink / raw)
  To: Michal Hocko, Mike Christie
  Cc: mtk.manpages, linux-api, david, masato.suzuki, damien.lemoal,
	darrick.wong, bvanassche, linux-man

On 4/2/20 8:47 AM, Michal Hocko wrote:
> On Wed 01-04-20 21:08:50, Mike Christie wrote:
>> This patch documents the PR_SET_IO_FLUSHER and PR_GET_IO_FLUSHER
>> prctl commands added to the linux kernel for 5.6 in commit:
>>
>> commit 8d19f1c8e1937baf74e1962aae9f90fa3aeab463
>> Author: Mike Christie <mchristi@redhat.com>
>> Date:   Mon Nov 11 18:19:00 2019 -0600
>>
>>     prctl: PR_{G,S}ET_IO_FLUSHER to support controlling memory reclaim
>>
>> Signed-off-by: Mike Christie <mchristi@redhat.com>
> 
> Yes this wording is much better than the previous version.
> 
> Acked-by: Michal Hocko <mhocko@suse.com>

Thanks for the review, Michal!

-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] prctl.2: doc PR_SET/GET_IO_FLUSHER - V4
  2020-04-02  3:46 ` Bart Van Assche
  2020-04-02 12:16   ` Michael Kerrisk (man-pages)
@ 2020-04-02 14:01   ` Michael Christie
  2020-04-02 20:12     ` Michael Kerrisk (man-pages)
  1 sibling, 1 reply; 10+ messages in thread
From: Michael Christie @ 2020-04-02 14:01 UTC (permalink / raw)
  To: Bart Van Assche, linux-api, david, mhocko, masato.suzuki,
	damien.lemoal, darrick.wong, mtk.manpages, linux-man

On 04/01/2020 10:46 PM, Bart Van Assche wrote:
> On 2020-04-01 19:08, Mike Christie wrote:
>> +.TP
>> +.B PR_GET_IO_FLUSHER (Since Linux 5.6)
>> +Return as the function result 1 if the caller is in the IO_FLUSHER state and
>> +0 if not.
> 
> Although I'm not at all a language expert, the word order at the start
> of the above sentence seems a bit weird to me?
> 

Do you mean the "Return as the function result" part or something else?

That is how the other commands worded it. It looks like I messed up and
dropped the (). This is how they did it:

"Return (as the function result)"

I will resend with that fix.

If I misunderstood you I will fix that too.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] prctl.2: doc PR_SET/GET_IO_FLUSHER - V4
  2020-04-02 14:01   ` Michael Christie
@ 2020-04-02 20:12     ` Michael Kerrisk (man-pages)
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Kerrisk (man-pages) @ 2020-04-02 20:12 UTC (permalink / raw)
  To: Mike Christie
  Cc: Bart Van Assche, Linux API, Dave Chinner, Michal Hocko,
	masato.suzuki, damien.lemoal, Darrick J. Wong, linux-man

On Thu, 2 Apr 2020 at 16:01, Michael Christie <mchristi@redhat.com> wrote:
>
> On 04/01/2020 10:46 PM, Bart Van Assche wrote:
> > On 2020-04-01 19:08, Mike Christie wrote:
> >> +.TP
> >> +.B PR_GET_IO_FLUSHER (Since Linux 5.6)
> >> +Return as the function result 1 if the caller is in the IO_FLUSHER state and
> >> +0 if not.
> >
> > Although I'm not at all a language expert, the word order at the start
> > of the above sentence seems a bit weird to me?
> >
>
> Do you mean the "Return as the function result" part or something else?
>
> That is how the other commands worded it. It looks like I messed up and
> dropped the (). This is how they did it:
>
> "Return (as the function result)"
>
> I will resend with that fix.
>
> If I misunderstood you I will fix that too.

I already fixed this piece. There are still the open questions in my
other mail though.


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] prctl.2: doc PR_SET/GET_IO_FLUSHER - V4
  2020-04-02 12:16 ` Michael Kerrisk (man-pages)
@ 2020-04-04 21:07   ` Mike Christie
  2020-04-06 11:00     ` Michael Kerrisk (man-pages)
  0 siblings, 1 reply; 10+ messages in thread
From: Mike Christie @ 2020-04-04 21:07 UTC (permalink / raw)
  To: Michael Kerrisk (man-pages),
	linux-api, david, mhocko, masato.suzuki, damien.lemoal,
	darrick.wong, bvanassche, linux-man

On 04/02/2020 07:16 AM, Michael Kerrisk (man-pages) wrote:
> Hello Mike,
> 
> On 4/2/20 4:08 AM, Mike Christie wrote:
>> This patch documents the PR_SET_IO_FLUSHER and PR_GET_IO_FLUSHER
>> prctl commands added to the linux kernel for 5.6 in commit:
>>
>> commit 8d19f1c8e1937baf74e1962aae9f90fa3aeab463
>> Author: Mike Christie <mchristi@redhat.com>
>> Date:   Mon Nov 11 18:19:00 2019 -0600> 
>>     prctl: PR_{G,S}ET_IO_FLUSHER to support controlling memory reclaim
>>
>> Signed-off-by: Mike Christie <mchristi@redhat.com>
> 
> I've applied this patch, but I have some questions:

Hey,

Thanks for fixing up the patch for me.

> 
> (a) What happens to the IO_FLUSHER setting in the child of fork(2)?

The child will inherit the setting.

> (b) What happens to the IO_FLUSHER setting during an execve(2)?
>     (Is it preserved, reset, something else?)

It's preserved.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] prctl.2: doc PR_SET/GET_IO_FLUSHER - V4
  2020-04-04 21:07   ` Mike Christie
@ 2020-04-06 11:00     ` Michael Kerrisk (man-pages)
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Kerrisk (man-pages) @ 2020-04-06 11:00 UTC (permalink / raw)
  To: Mike Christie
  Cc: Linux API, Dave Chinner, Michal Hocko, masato.suzuki,
	damien.lemoal, Darrick J. Wong, Bart Van Assche, linux-man

Hi Mike,

On Sat, 4 Apr 2020 at 23:07, Mike Christie <mchristi@redhat.com> wrote:
>
> On 04/02/2020 07:16 AM, Michael Kerrisk (man-pages) wrote:
> > Hello Mike,
> >
> > On 4/2/20 4:08 AM, Mike Christie wrote:
> >> This patch documents the PR_SET_IO_FLUSHER and PR_GET_IO_FLUSHER
> >> prctl commands added to the linux kernel for 5.6 in commit:
> >>
> >> commit 8d19f1c8e1937baf74e1962aae9f90fa3aeab463
> >> Author: Mike Christie <mchristi@redhat.com>
> >> Date:   Mon Nov 11 18:19:00 2019 -0600>
> >>     prctl: PR_{G,S}ET_IO_FLUSHER to support controlling memory reclaim
> >>
> >> Signed-off-by: Mike Christie <mchristi@redhat.com>
> >
> > I've applied this patch, but I have some questions:
>
> Hey,
>
> Thanks for fixing up the patch for me.

you're welcome.

> > (a) What happens to the IO_FLUSHER setting in the child of fork(2)?
>
> The child will inherit the setting.
>
> > (b) What happens to the IO_FLUSHER setting during an execve(2)?
> >     (Is it preserved, reset, something else?)
>
> It's preserved.

Thanks. I added this text:

              The  IO_FLUSHER  state is inherited by a child process cre‐
              ated via fork(2) and is preserved across execve(2).

Cheers,

Michael


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-04-06 11:01 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-02  2:08 [PATCH] prctl.2: doc PR_SET/GET_IO_FLUSHER - V4 Mike Christie
2020-04-02  3:46 ` Bart Van Assche
2020-04-02 12:16   ` Michael Kerrisk (man-pages)
2020-04-02 14:01   ` Michael Christie
2020-04-02 20:12     ` Michael Kerrisk (man-pages)
2020-04-02  6:47 ` Michal Hocko
2020-04-02 12:16   ` Michael Kerrisk (man-pages)
2020-04-02 12:16 ` Michael Kerrisk (man-pages)
2020-04-04 21:07   ` Mike Christie
2020-04-06 11:00     ` Michael Kerrisk (man-pages)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).