| (ino0 ∈ dirs ⊃ mkinode(ino0, dirs[ino0].meta, true, dirs[ino0].nlink, dirs[ino0].nsubdirs, dirs[ino0].size) ;mkinode(ino0, files[ino0].meta, false, files[ino0].nlink, 0, files[ino0].size) ) = mkinode(m, md0, boolvar, m0, m1, m2), err = err0, err0 = ESUCCESS, inode = mkinode(m, md, boolvar, m0, m1, m2), afs-cons(dirs, files), ispath(p, ROOT_INO, ino0, dirs, files), of-cons(of, dirs, files), pre-write-inode(inode, dirs, files), pw(user, md0), px-parent(user, p, ROOT_INO, dirs, files), ino0 ∈ dirs ∨ ino0 ∈ files, m ∈ dirs ∧ m0 = dirs[m].nlink ∧ m2 = dirs[m].size ∧ m1 = dirs[m].nsubdirs ∧ boolvar ∨ m ∈ files ∧ m0 = files[m].nlink ∧ m1 = 0 ∧ ¬ boolvar ⊦ [ {if inode.directory then dirs[inode.ino].meta := inode.meta else {files[inode.ino].meta := inode.meta; files[inode.ino].size := inode.size}; err := ESUCCESS} or fail#(; ; err); asynced := ?] (afs-cons(dirs, files) → of-cons(of, dirs, files)) |
(ino0 ∈ dirs ⊃ mkinode(ino0, dirs[ino0].meta, true, dirs[ino0].nlink, dirs[ino0].nsubdirs, dirs[ino0].size) ;mkinode(ino0, files[ino0].meta, false, files[ino0].nlink, 0, files[ino0].size) ) = mkinode(m, md0, boolvar, m0, m1, m2), err = err0, err0 = ESUCCESS, inode = mkinode(m, md, boolvar, m0, m1, m2), afs-cons(dirs, files), ispath(p, ROOT_INO, ino0, dirs, files), of-cons(of, dirs, files), pre-write-inode(inode, dirs, files), pw(user, md0), px-parent(user, p, ROOT_INO, dirs, files), m ∈ dirs ∧ m0 = dirs[m].nlink ∧ m2 = dirs[m].size ∧ m1 = dirs[m].nsubdirs ∧ boolvar ∨ m ∈ files ∧ m0 = files[m].nlink ∧ m1 = 0 ∧ ¬ boolvar, ino0 ∈ dirs ∨ ino0 ∈ files ⊦ [if inode.directory then dirs[inode.ino].meta := inode.meta else {files[inode.ino].meta := inode.meta; files[inode.ino].size := inode.size}; err := ESUCCESS; asynced := ?] (afs-cons(dirs, files) → of-cons(of, dirs, files))
(ino0 ∈ dirs ⊃ mkinode(ino0, dirs[ino0].meta, true, dirs[ino0].nlink, dirs[ino0].nsubdirs, dirs[ino0].size) ;mkinode(ino0, files[ino0].meta, false, files[ino0].nlink, 0, files[ino0].size) ) = mkinode(m, md0, boolvar, m0, m1, m2), err = err0, err0 = ESUCCESS, inode = mkinode(m, md, boolvar, m0, m1, m2), afs-cons(dirs, files), ispath(p, ROOT_INO, ino0, dirs, files), of-cons(of, dirs, files), pre-write-inode(inode, dirs, files), pw(user, md0), px-parent(user, p, ROOT_INO, dirs, files), m ∈ dirs ∧ m0 = dirs[m].nlink ∧ m2 = dirs[m].size ∧ m1 = dirs[m].nsubdirs ∧ boolvar ∨ m ∈ files ∧ m0 = files[m].nlink ∧ m1 = 0 ∧ ¬ boolvar, ino0 ∈ dirs ∨ ino0 ∈ files ⊦ [fail#(; ; err); asynced := ?] (afs-cons(dirs, files) → of-cons(of, dirs, files))