| inode1.nlink = files[inode1.ino].nlink, inode1.nsubdirs = 0, icache[m] = mkientry(true, inode1), files0[m] = mkfile(m0, md0, m1, content), err = ESUCCESS, m ∈ files0, m ∈ icache, inode1.ino ∈ files, m2 ≤ n * VFS_PAGE_SIZE, ¬ inode1.directory ⊦ [icache_set_status#(m, false; err, icache); dirs := dirs0; if err = ESUCCESS then afs_fsync# (inode1, false, dirs, files[inode1.ino, (inode1.ino ∈ files ⊃ files[inode1.ino].meta:= inode1.meta;files[inode1.ino]).size:= inode1.size] ; ; asynced2, err)] (dirs = dirs0) |
files0[m] = mkfile(m0, md0, m1, content), icache[m] = mkientry(true, inode1), ¬ boolvar, err = ESUCCESS, inode1 = mkinode(m3, md, boolvar, m4, m5, m6), m4 = files[m3].nlink, m5 = 0, m3 ∈ files, m ∈ icache, m ∈ files0, m2 ≤ n * VFS_PAGE_SIZE ⊦ [icache_set_status#(m, false; err, icache); dirs := dirs0; if err = ESUCCESS then afs_fsync#(inode1, false, dirs, files[m3, (m3 ∈ files ⊃ files[m3].meta:= md;files[m3]).size:= m6]; ; asynced2, err)] (dirs = dirs0)
Used simplifier rules: ⊦ ( ( ( (m = inode.ino ∧ md = inode.meta) ∧ (boolvar ↔ inode.directory)) ∧ m0 = inode.nlink) ∧ m1 = inode.nsubdirs) ∧ m2 = inode.size ↔ inode = mkinode(m, md, boolvar, m0, m1, m2); (elim) Used terms: inode1, m3, md, boolvar, m4, m5, m6