| ubi_change#(VOLID, LNUM, N, BUF, PAGESIZE; VOLS, WLARRAY, ERASEQ, BFLIPSET, VTBLPNUM, SQNUM, APEBS; ERR) {if N ≤ LEB_SIZE ∧ N ≤ # BUF ∧ VOLID ∈ VOLS ∧ LNUM < # VOLS[VOLID] ∧ is-aligned(N, EB_PAGE_SIZE) then let TO = ? in {ubi_wl_get_peb#(; TO, WLARRAY, ERASEQ, APEBS; ERR); if ERR = ESUCCESS then ubi_atomic_leb_change#(VOLID, LNUM, TO, N, BUF, PAGESIZE; VOLS, WLARRAY, ERASEQ, BFLIPSET, VTBLPNUM, SQNUM, APEBS; ERR); if ERR ≠ ESUCCESS then debug#("ubi: change to PEB " + TO.toString + " failed")} else abort } |