| asynced0 ↔ bv, inode = mkinode(ino, md, false, m, n0, n), pageno = inode.size / VFS_PAGE_SIZE, buf-opt.none?, afs-cons(dirs, files) ⊦ [if pre-truncate(inode, n, pageno, buf-opt, dirs, files) then 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) else abort] (err = ESUCCESS → files[ino].content.stream from n = σ⊥) |
afs-cons(dirs, files) ⊦ [if pre-truncate(mkinode(ino, md, false, m, n0, n), n, n / VFS_PAGE_SIZE, none, dirs, files) then let old_ino0 = 0, old_ino = 0 in {inode := mkinode(ino, md, false, m, n0, n); buf-opt := none; afs_truncate_internal#(n, inode.size / VFS_PAGE_SIZE; inode, buf-opt, old_ino0, old_ino, asynced0, err, dirs, files; asynced)} else abort] (err = ESUCCESS → files[ino].content.stream from n = σ⊥)
Used simplifier rules: ⊦ VFS_PAGE_SIZE ≠ 0; (s)% ⊦ mkinode(m, md, boolvar, m0, m1, m2).size = m2; (s)% ⊦ buf-opt.none? ↔ buf-opt = none; (s)