| gjournal_index_store#(KEY, ADR, PFI, PINVAL, PSTORE0, PNL, PMAXINO, P_OS, ISYNCED; JMAXINO, PRI, PSTORE) {if ¬ ADR ∈ PRI ∧ ADR ∈ PSTORE ∧ key-cons(KEY, PSTORE[ADR].nd) then let EXISTS = ?, OLDADR = ? in {index_index_store#(KEY, ADR, PFI, PINVAL, PSTORE, PSTORE0, PNL, PMAXINO, P_OS, ISYNCED; OLDADR, EXISTS, PRI); let N = ? in {if EXISTS then {index_get_gblock_refsize#(OLDADR.lnum, PRI, PFI, PINVAL, PSTORE, PSTORE0, PNL, PMAXINO, P_OS, ISYNCED; ; N); index_set_gblock_refsize#(OLDADR.lnum, N - OLDADR.size, PRI, PFI, PINVAL, PSTORE0, PNL, PMAXINO, P_OS, ISYNCED; PSTORE)}; index_get_gblock_refsize#(ADR.lnum, PRI, PFI, PINVAL, PSTORE, PSTORE0, PNL, PMAXINO, P_OS, ISYNCED; ; N); index_set_gblock_refsize#(ADR.lnum, N + ADR.size, PRI, PFI, PINVAL, PSTORE0, PNL, PMAXINO, P_OS, ISYNCED; PSTORE)}; JMAXINO := max(KEY.ino + 1, JMAXINO)} else abort } |