On Thu, Jan 15, 2009 at 02:50:27PM +0100, Francis Moreau wrote: > Let's say that a process wants to read a page of data stored in a file. > For that it issues a sys_read(). > > Now the data page is not in the page cache and it must be fetched from > the disk. > > So I assume while the data page is recovered from the disk, the process > is suspended until the data are ready to be read. > > Could anybody show me where in the source code where the process is > suspended ? Sure. Take a look in mm/filemap.c. Filesystems that use the page cache will usually end up calling do_generic_file_read() one way or another. It tries to find the page in the page cache, when it doesn't find the page, it creates it, then calls ->readpage() to start the read, and lock_page_killable() to wait for the page to be read. As the comment says, when the read finishes, it will unlock the page and the reader will continue. -- Matthew Wilcox Intel Open Source Technology Centre "Bill, look, we understand that you're interested in selling us this operating system, but compare it to ours. We can't possibly take such a retrograde step." -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html