| vfs_walk#(PATH, USER, DIRS, FILES, ASYNCED; INO, ERR) {ERR := ESUCCESS; let PATH = PATH in while PATH ≠ ε ∧ ERR = ESUCCESS do {choose INODE with true in vfs_may_lookup#(INO, USER, DIRS, FILES, ASYNCED; INODE, ERR); if ERR = ESUCCESS then let DENT = negdentry(PATH.head) in {afs_lookup#(INO, DIRS, FILES, ASYNCED; DENT, ERR); if ERR = ESUCCESS then {INO := DENT.ino; PATH := PATH.tail}}} } |