Module Name: src Committed By: uebayasi Date: Sun Nov 21 12:43:00 UTC 2010
Modified Files: src/sys/miscfs/genfs [uebayasi-xip]: genfs_io.c src/sys/uvm [uebayasi-xip]: uvm_bio.c uvm_fault.c uvm_pager.h Log Message: Resurrect PGO_ZERO support. When vnode pager encounters hole pages in XIP'ed vnodes, it fills page slots with PGO_ZERO and returns them back to the caller (fault handler). Fault handlers are responsible to check page slots and redirect PGO_ZERO to the single "zero page" allocated by calling uvm_page_zeropage_alloc(9). The zero page is wired, read-only (PG_RDONLY) page. It's shared by multiple vnodes, it has no single owner. XIP'ed vnodes are supposed to be "stable" during I/O (unlocked). Because XIP'ed mounts are always read-only. There's no chance to change mappings of XIP'ed vnodes and their XIP'ed pages. Thus the cached uobj is reused after pgo_get() for PGO_ZERO. (Do we need a new concept of "read-only UVM object"?) To generate a diff of this commit: cvs rdiff -u -r1.36.2.59 -r1.36.2.60 src/sys/miscfs/genfs/genfs_io.c cvs rdiff -u -r1.68.2.12 -r1.68.2.13 src/sys/uvm/uvm_bio.c cvs rdiff -u -r1.166.2.23 -r1.166.2.24 src/sys/uvm/uvm_fault.c cvs rdiff -u -r1.38.14.1 -r1.38.14.2 src/sys/uvm/uvm_pager.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.