| err0 = ESUCCESS, afs-cons(dirs, files), ino + n ≤ # buf2, ino0 + n ≤ # buf0 ⊦ [afs_writepage#(inode, pageno, copy(buf0, ino0, buf2, ino, n), dirs; err0, files; asynced)] afs-cons(dirs, files) |
buf = copy(buf0, ino0, buf2, ino, n), err = err0, err0 = ESUCCESS, afs-cons(dirs, files), ino0 + n ≤ # buf0, ino + n ≤ # buf2 ⊦ [if pre-writepage(inode, pageno, buf, dirs, files) then {{files[inode.ino].content[pageno] := buf; err := ESUCCESS} or fail#(; ; err); asynced := ?} else abort] afs-cons(dirs, files)
Used simplifier rules: afs_writepage#(INODE, PAGENO, PBUF, DIRS; ERR, FILES; ASYNCED) {if pre-writepage(INODE, PAGENO, PBUF, DIRS, FILES) then { {FILES[INODE.ino].content[PAGENO] := PBUF; ERR := ESUCCESS} or fail#(; ; ERR); ASYNCED := ?} else abort };