On 21/12/2010 21:53, Jeff Bacon wrote:
So, to Phil's email - read()/write() on a ZFS-backed vnode somehow
completely bypass the page cache and depend only on the ARC? How the
heck does that happen - I thought all files were represented as vm
objects?

For most other filesystems (and oversimplifying rather) the vnode ops for read/write are implemented by mapping the file into the kernel address space (via the segmap segment) and doing bcopy() operations between user buffers and the page cache (which in the case of reads causes page faults leading to getpage vnode ops). If some form of direct I/O is in place, segmap (and therefore, the page cache) is bypassed.

In the case of ZFS the vnode ops for read/write call into the ZPL (ZFS POSIX Layer) unless the file is also mapped (in which case segmap has to be involved again, and the icky glue between the page cache and the ARC comes into play).
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to