| apersistence_io_write#(LNUM, OFFSET, N0, N, BUF, PROOTADR, PMAXINO, PLOG, PLPT, PORPHANS; PVOL; ERR) {if LNUM < # PVOL ∧ PVOL[LNUM].mapped? ∧ # PVOL[LNUM].data ≤ OFFSET ∧ is-aligned(OFFSET, EB_PAGE_SIZE) ∧ is-aligned(N, EB_PAGE_SIZE) ∧ OFFSET + N ≤ LEB_SIZE ∧ N0 + N ≤ # BUF then {fail_or_success#(; ; ERR); if ERR = ESUCCESS then if N ≠ 0 then PVOL[LNUM] := mapped(PVOL[LNUM].data + mkempbuf(OFFSET - # PVOL[LNUM].data) + subarray(BUF, N0, N)) else choose N1 with N1 < N ∧ is-aligned(N1, EB_PAGE_SIZE) in if N1 ≠ 0 then PVOL[LNUM] := mapped(PVOL[LNUM].data + mkempbuf(OFFSET - # PVOL[LNUM].data) + subarray(BUF, N0, N1)) ifnone skip} else abort } |