| cache_readpage#(INODE, PAGENO, DIRS, FILES, ASYNCED; PBUF, ERR, PCACHE) {if pre-readpage(INODE, PAGENO, PBUF, DIRS, FILES) then let HIT = false, INO = INODE.ino in {pcache_get#(INO, PAGENO, PCACHE; HIT, PBUF, ERR); if ¬ HIT ∨ ERR ≠ ESUCCESS then {afs_readpage#(INODE, PAGENO, DIRS, FILES, ASYNCED; PBUF, ERR); if ERR = ESUCCESS ∧ PBUF ≠ zeropage then let DIRTY = false in pcache_set#(INO, PAGENO, PBUF, DIRTY; ERR, PCACHE)}} else abort } |