Hi All, I am trying to replace a page which is already present in page_cache. Is there any direct way to do so (via some kernel API)? My experiment is something like, I have a file opened and read completely in user space app (just to make sure that all the file is present in page cache). From kernel, I am allocating a new page, filling some data into it, and want to store this data by replacing some existing page from page_cache. Initially I was thinking of removing a page (at a particular index) from page_cache and then add my new page at the same index. But by doing so, that page will be treated as containing invalid data, hence again the data will be fetched from the disk and it will overwrite whatever I had initially written into that page. Is there any way I can add the page into page_cache (by add_to_page_cache_lru) and still mark it Uptodate (SetPageUptodate or something) without any bad consequences? Regards, Jack
On Mon, Feb 27, 2012 at 20:41, Jack David <jd6589@gmail.com> wrote:
Hi All,
I am trying to replace a page which is already present in page_cache. Is there any direct way to do so (via some kernel API)? My experiment is something like, I have a file opened and read completely in user space app (just to make sure that all the file is present in page cache). From kernel, I am allocating a new page, filling some data into it, and want to store this data by replacing some existing page from page_cache.
sounds like what you want to do is like normal mmap in user space and then write new data into it? -- regards, Mulyadi Santosa Freelance Linux trainer and consultant blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
On Tue, Feb 28, 2012 at 2:50 AM, Mulyadi Santosa <mulyadi.santosa@gmail.com> wrote:
On Mon, Feb 27, 2012 at 20:41, Jack David <jd6589@gmail.com> wrote:
Hi All,
I am trying to replace a page which is already present in page_cache. Is there any direct way to do so (via some kernel API)? My experiment is something like, I have a file opened and read completely in user space app (just to make sure that all the file is present in page cache). From kernel, I am allocating a new page, filling some data into it, and want to store this data by replacing some existing page from page_cache.
sounds like what you want to do is like normal mmap in user space and then write new data into it?
Actually I want to share the pages (present in page cache) between two files. I want to avoid memcopy in kernel as much as possible. I am going through the mmap implementation in kernel but not able to understand how it can help me in my scenario. J
participants (2)
-
Jack David -
Mulyadi Santosa