| persistence_deallocate_gnd#(N, LOG, WROOTADR, WMAXINO, WLOG, WLPT, WORPHANS, WBUFLEB, AROFS; LPT, FREELIST, GCHEAP, WVOL; ERR) {if synced(WVOL) ∧ N < # LPT ∧ LPT[N].flags = LP_GROUP_NODES ∧ ¬ N ∈ LOG then let AROFS0 = ? in {awbuf_is_readonly#(WROOTADR, WMAXINO, WLOG, WVOL, WLPT, WORPHANS, WBUFLEB, AROFS; ; AROFS0); if AROFS0 then ERR := EROFS else {awbuf_unmap#(N, WROOTADR, WMAXINO, WLOG, WLPT, WORPHANS, WBUFLEB, AROFS; WVOL); LPT[N].flags := LP_FREE; LPT[N].ref-size := 0; LPT[N].size := 0; FREELIST := FREELIST + N; gc_heap_remove#(LPT[N].gcheapidx; GCHEAP, LPT); ERR := ESUCCESS}} else abort } |