linux-man.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Michael Kerrisk (man-pages)" <mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Phillip Susi <psusi-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org>
Cc: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
	linux-ext4-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Corrado Zoccolo
	<czoccolo-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	"Gregory P. Smith" <gps-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
	Zhu Yanhai <zhu.yanhai-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Subject: Re: [PATCH] readahead.2: don't claim the call blocks until all data has been read
Date: Sat, 15 Mar 2014 10:05:14 +0100	[thread overview]
Message-ID: <532417CA.1040300@gmail.com> (raw)
In-Reply-To: <1394812471-9693-1-git-send-email-psusi-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org>

[CC += Past reporters: Corrado Zoccolo, Greg Smith, Zhu Yanhai]

On 03/14/2014 04:54 PM, Phillip Susi wrote:
> The readahead(2) man page was claiming that the call blocks until all
> data has been read into the cache.  This is incorrect.

Phillip, thanks for a good patch that sums things up. I didn't follow
up an earlier patch from Greg Smith, but that patch failed to explain the
behavior we discussed in https://bugzilla.kernel.org/show_bug.cgi?id=54271
where call did sometimes block for a considerable time.

I've applied the patch. Thanks for your efforts and persistence.

I've tweaked your text a bit to make some details clearer (I hope):

       readahead()  initiates  readahead  on a file so that subsequent
       reads from that file will, be satisfied from the cache, and not
       block  on  disk I/O (assuming the readahead was initiated early
       enough and that other activity on the system  did  not  in  the
       meantime flush pages from the cache).

       ...

       readahead()  attempts  to  schedule the reads in the background
       and return immediately.  However, it may block while  it  reads
       the  filesystem metadata needed to locate the requested blocks.
       This occurs frequently with ext[234] on large files using indi‐
       rect  blocks instead of extents, giving the appearence that the
       call blocks until the requested data has been read.

Okay?

Cheers,

Michael
 
> Signed-off-by: Phillip Susi <psusi-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org>
> ---
>  man2/readahead.2 | 15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/man2/readahead.2 b/man2/readahead.2
> index 605fa5e..1b0376e 100644
> --- a/man2/readahead.2
> +++ b/man2/readahead.2
> @@ -27,7 +27,7 @@
>  .\"
>  .TH READAHEAD 2 2013-04-01 "Linux" "Linux Programmer's Manual"
>  .SH NAME
> -readahead \- perform file readahead into page cache
> +readahead \- initiate file readahead into page cache
>  .SH SYNOPSIS
>  .nf
>  .BR "#define _GNU_SOURCE" "             /* See feature_test_macros(7) */"
> @@ -37,8 +37,8 @@ readahead \- perform file readahead into page cache
>  .fi
>  .SH DESCRIPTION
>  .BR readahead ()
> -populates the page cache with data from a file so that subsequent
> -reads from that file will not block on disk I/O.
> +initates readahead on a file so that subsequent reads from that file will
> +hopefully be satisfied from the cache, and not block on disk I/O.
>  The
>  .I fd
>  argument is a file descriptor identifying the file which is
> @@ -57,8 +57,6 @@ equal to
>  .IR "(offset+count)" .
>  .BR readahead ()
>  does not read beyond the end of the file.
> -.BR readahead ()
> -blocks until the specified data has been read.
>  The current file offset of the open file referred to by
>  .I fd
>  is left unchanged.
> @@ -94,6 +92,13 @@ On some 32-bit architectures,
>  the calling signature for this system call differs,
>  for the reasons described in
>  .BR syscall (2).
> +
> +The call attempts to schedule the reads in the background and return
> +immediately, however it may block while reading filesystem metadata
> +in order to locate where the blocks requested are.  This occurs frequently
> +with ext[234] on large files using indirect blocks instead of extents,
> +giving the appearence that the call blocks until the requested data has
> +been read.
>  .SH SEE ALSO
>  .BR lseek (2),
>  .BR madvise (2),
> 


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2014-03-15  9:05 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-14 15:54 [PATCH] readahead.2: don't claim the call blocks until all data has been read Phillip Susi
     [not found] ` <1394812471-9693-1-git-send-email-psusi-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org>
2014-03-15  9:05   ` Michael Kerrisk (man-pages) [this message]
2014-03-15  9:24     ` Christoph Hellwig
2014-03-15 12:31       ` Michael Kerrisk (man-pages)
     [not found]     ` <532417CA.1040300-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-03-15 16:22       ` Phillip Susi
2014-03-15 16:25         ` Michael Kerrisk (man-pages)
2014-03-15 23:26           ` Phillip Susi

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=532417CA.1040300@gmail.com \
    --to=mtk.manpages-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=czoccolo-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=gps-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
    --cc=linux-ext4-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org \
    --cc=psusi-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org \
    --cc=zhu.yanhai-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.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 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).