| ⟨vfs_walk#(p, user, dirs, files, asynced; ino, err)⟩ (ino = ino0 ∧ err = err0), err = ESUCCESS, ino = ROOT_INO, afs-cons(dirs, files), of-cons(of, dirs, files), ⌊err0⌋ ∨ err0 = ESUCCESS ∧ ispath(p, ROOT_INO, ino0, dirs, files) ∧ px-parent(user, p, ROOT_INO, dirs, files) ∨ err0 = ENOENT ∧ ¬ ispath(p, ROOT_INO, dirs, files) ∨ err0 = EACCESS ∧ p ≠ ε ∧ (∃ p'. p' ⊑ parent(p) ∧ ispath(p', ROOT_INO, dirs, files) ∧ ¬ px(user, p', ROOT_INO, dirs, files)) ⊦ ⟪if err0 = ESUCCESS then let isdir = false in vfs_may_open#(ino0, isdir, MODE_R, user, dirs, files, asynced; inode, err0); if err0 = ESUCCESS then afs_fsync#(inode, isdir0, dirs, files; ; asynced, err0); if err0 = ESUCCESS then afs_sync#(dirs, files; ; asynced, err0)⟫ true |
⟨vfs_walk#(p, user, dirs, files, asynced; ino, err)⟩ (ino = ino0 ∧ err = err0), err = ESUCCESS, err0 = ESUCCESS, ino = ROOT_INO, afs-cons(dirs, files), of-cons(of, dirs, files), ⌊err0⌋ ∨ err0 = ESUCCESS ∧ ispath(p, ROOT_INO, ino0, dirs, files) ∧ px-parent(user, p, ROOT_INO, dirs, files) ∨ err0 = ENOENT ∧ ¬ ispath(p, ROOT_INO, dirs, files) ∨ err0 = EACCESS ∧ p ≠ ε ∧ (∃ p'. p' ⊑ parent(p) ∧ ispath(p', ROOT_INO, dirs, files) ∧ ¬ px(user, p', ROOT_INO, dirs, files)) ⊦ ⟪let isdir = false in vfs_may_open#(ino0, isdir, MODE_R, user, dirs, files, asynced; inode, err0); if err0 = ESUCCESS then afs_fsync#(inode, isdir0, dirs, files; ; asynced, err0); if err0 = ESUCCESS then afs_sync#(dirs, files; ; asynced, err0)⟫ true
⟨vfs_walk#(p, user, dirs, files, asynced; ino, err)⟩ (ino = ino0 ∧ err = err0), err = ESUCCESS, ino = ROOT_INO, afs-cons(dirs, files), of-cons(of, dirs, files), ⌊err0⌋ ∨ err0 = ESUCCESS ∧ ispath(p, ROOT_INO, ino0, dirs, files) ∧ px-parent(user, p, ROOT_INO, dirs, files) ∨ err0 = ENOENT ∧ ¬ ispath(p, ROOT_INO, dirs, files) ∨ err0 = EACCESS ∧ p ≠ ε ∧ (∃ p'. p' ⊑ parent(p) ∧ ispath(p', ROOT_INO, dirs, files) ∧ ¬ px(user, p', ROOT_INO, dirs, files)) ⊦ ⟪skip; if err0 = ESUCCESS then afs_fsync#(inode, isdir0, dirs, files; ; asynced, err0); if err0 = ESUCCESS then afs_sync#(dirs, files; ; asynced, err0)⟫ true, err0 = ESUCCESS