| (ino ∈ dirs ⊃ mkinode(ino, dirs[ino].meta, true, dirs[ino].nlink, dirs[ino].nsubdirs, dirs[ino].size);mkinode(ino, md0, false, m4, 0, m3)) = mkinode(m, md, false, m0, m1, m2), asynced0 ↔ bv, files[ino] = mkfile(m3, md0, m4, content), buf-opt = none, files0 = files, inode = mkinode(ino, md0, false, m4, 0, m3), n = m3, pageno = m3 / VFS_PAGE_SIZE, afs-cons(dirs, files), pre-truncate(inode, n, pageno, buf-opt, dirs, files) ⊦ [let old_ino0 = 0, old_ino = 0 in afs_truncate_internal#(n, pageno; inode, buf-opt, old_ino0, old_ino, asynced0, err, dirs, files; asynced)] (files0 ~ files ∧ (⌊err⌋ ∨ err = ESUCCESS)), VFS_PAGE_SIZE = 0 |
(ino ∈ dirs ⊃ mkinode(ino, dirs[ino].meta, true, dirs[ino].nlink, dirs[ino].nsubdirs, dirs[ino].size);mkinode(ino, md0, false, m4, 0, m3)) = mkinode(m, md, false, m0, m1, m2), asynced0 ↔ bv, files[ino] = mkfile(m3, md0, m4, content), buf-opt = none, files0 = files, inode = mkinode(ino, md0, false, m4, 0, m3), n = m3, old_ino = 0, old_ino0 = 0, pageno = m3 / VFS_PAGE_SIZE, afs-cons(dirs, files), pre-truncate(inode, n, pageno, buf-opt, dirs, files) ⊦ [afs_truncate_internal#(n, pageno; inode, buf-opt, old_ino0, old_ino, asynced0, err, dirs, files; asynced)] (files0 ~ files ∧ (⌊err⌋ ∨ err = ESUCCESS)), VFS_PAGE_SIZE = 0