Re: [PATCH v7 0/5] vfs: Non-blockling buffered fs read (page cache only)
From: Volker Lendecke <hidden>
Date: 2015-03-27 05:41:25
Also in:
linux-arch, linux-fsdevel, lkml
On Thu, Mar 26, 2015 at 08:28:24PM -0700, Andrew Morton wrote:
A thing which bugs me about pread2() is that it is specifically tailored to applications which are able to use a partial read result. ie, by sending it over the network.
Can you explain what you mean by this? Samba gets a pread request from a client for some bytes. The client will be confused when we send less than requested although the file is long enough to satisfy all.
And of course fincore could be used by Samba etc to avoid blocking on reads. It wouldn't perform quite as well as pread2(), but I bet it's good enough. Bottom line: with pread2() there's still a need for fincore(), but with fincore() there probably isn't a need for pread2().
fincore would be a second syscall per pread, and it is not atomic. I've had discussions with MIPS based vendors who are worried about every single syscall. This is the #1 hottest code path in Samba.
And I'm doubtful about claims that it absolutely has to be non-blocking 100% of the time. I bet that 99.99% is good enough. A fincore() option to run mark_page_accessed() against present pages would help with the race-with-reclaim situation.
If you can make sure that after an fincore the pages remain in memory for x milliseconds the atomicity concern might go away. Volker -- SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen phone: +49-551-370000-0, fax: +49-551-370000-9 AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen http://www.sernet.de, mailto:kontakt@sernet.de -- To unsubscribe, send a message with 'unsubscribe linux-aio' in the body to majordomo@kvack.org. For more info on Linux AIO, see: http://www.kvack.org/aio/ Don't email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a>