| afs-cons(dirs, files), ino ∈ dirs, links(ino, dirs) ≠ ∅ ∨ ino = ROOT_INO ⊦ ⟪let p = p in {err := ESUCCESS; while p ≠ ε ∧ 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(p.head) in {afs_lookup#(ino, dirs, files, asynced; dent, err); if err = ESUCCESS then {ino := dent.ino; p := p.tail}}}}⟫ true |
p = p0, afs-cons(dirs, files), ino ∈ dirs, links(ino, dirs) ≠ ∅ ∨ ino = ROOT_INO ⊦ ⟪err := ESUCCESS; while p ≠ ε ∧ 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(p.head) in {afs_lookup#(ino, dirs, files, asynced; dent, err); if err = ESUCCESS then {ino := dent.ino; p := p.tail}}}⟫ true