Messages in this thread | | | Subject | Re: Question about invalidate_inode_pages2_range() | From | Trond Myklebust <> | Date | Tue, 20 Oct 2009 14:25:46 +0900 |
| |
On Mon, 2009-10-19 at 16:38 +0800, Peng Tao wrote: > On Mon, Oct 19, 2009 at 4:26 PM, Trond Myklebust > <trond.myklebust@fys.uio.no> wrote: > > On Mon, 2009-10-19 at 16:16 +0800, Peng Tao wrote: > >> Hi, > >> > >> I've a question about invalidate_inode_pages2_range(). > >> > >> When does invalidate_inode_pages2_range() returns -EBUSY? It locks and > >> writes back the page. Why invalidate_complete_page2() still may fail > >> due to page dirtiness? > > > > A lot of those requirements were set by NFS, which uses > > invalidate_inode_pages2() in order to invalidate the page cache when it > > detects that a file has been changed on the server (either due to an > > O_DIRECT write, or due to another client modifying the file). > > > > In such cases, you want to try to keep the dirty data by writing it out > > instead of discarding it. > Thanks for your quick response. But I have two more questions about this. > 1. invalidate_inode_pages2_range() calls wait_on_page_writeback(). > Does the latter actually write out the dirty page?
No. It just waits for any outstanding writeback activity on that page to finish.
> 2. Is there any interface in the mm subsystem forces discarding a page cache?
You mean that also discards dirty pages? Yes. That is what truncate_inode_pages() does...
| |