On Thu, Jan 15, 2009 at 7:30 PM, Matthew Wilcox <matthew@xxxxxx> wrote: > 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 ? I might be wrong, because I am a newbie too.......but still i will try. I think it follows the below path. do_generic_file_read() -> find_get_page() (This tries to find the required page in cache). If we don't find here we try to do a readahead using page_cache_sync_readahead() and then we eventually call mpage_readpage() -> do_mpage_readpage() and then we put it in the cache using add_to_page_cache_lru(). Please correct me if I am wrong. Thanks - Manish > > 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 > -- 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