| persistence_io_commit#(LPT, INDEXADR0, MAXINO0, PAGESIZE, LEBSIZE; ORPHANS, SB, AVOL, LOGOFF; ERR) {if # LPT + SB.main = # AVOL then let VOLSIZE = ? in {ebm_avol_get_volume_size#(AVOL; ; VOLSIZE); VOLSIZE := VOLSIZE - SB.main; let NEWSB = SB in {NEWSB.indexaddr := INDEXADR0; NEWSB.maxino := MAXINO0; NEWSB.orphsize := # ORPHANS; if NEWSB.log = SB_LOG then {NEWSB.log := SB_LOG + 1; NEWSB.orph := SB_ORPH + 1; NEWSB.lpt := SB_LPT + lptlebs(VOLSIZE, LEBSIZE)} else {NEWSB.log := SB_LOG; NEWSB.orph := SB_ORPH; NEWSB.lpt := SB_LPT}; ebm_avol_remap#(NEWSB.log; AVOL; ERR); if ERR = ESUCCESS then persistence_io_write_orphans#(NEWSB.orph, PAGESIZE, LEBSIZE; ORPHANS, AVOL; ERR); if ERR = ESUCCESS then let BUF = ? in {persistence_io_encode_lpt#(LPT, LEBSIZE; ; BUF, ERR); if ERR = ESUCCESS then persistence_io_write_lebs#(NEWSB.lpt, lptlebs(VOLSIZE, LEBSIZE), BUF, LEBSIZE; AVOL; ERR)}; if ERR = ESUCCESS then ebm_avol_sync_device#(AVOL; ; ERR); if ERR = ESUCCESS then persistence_io_write_superblock#(NEWSB, PAGESIZE, LEBSIZE; AVOL; ERR); if ERR = ESUCCESS then {SB := NEWSB; LOGOFF := 0}}} else abort } |