| ubi_get_pebs_for_wl#(WLARRAY; TO, FROM, BFLIPSET; VALID) {VALID := false; let FOUND = ?, N = ? in {ubi_wl_get_free_min#(WLARRAY; N; FOUND); if FOUND then {ubi_wl_find_free_max_below#(N + 2 * WL_THRESHOLD, WLARRAY; TO); if BFLIPSET ≠ ∅ then choose N with N ∈ BFLIPSET in {FROM := N; BFLIPSET := BFLIPSET -- N; VALID := true} else {ubi_wl_get_used_min#(WLARRAY; FROM; FOUND); if FOUND ∧ WLARRAY[TO].ec ≥ WLARRAY[FROM].ec + WL_THRESHOLD then VALID := true}}} } |