| ((files ⊕ pcache) ⊕ icache)[ino] = mkfile(m0, md, m1, content), files[ino] = mkfile(m2, md0, m3, content0), ino ∈ files, ino ∈ icache ⊦ mkfile(m0, md, m1, content[m, buf]) = ((files[ino, mkfile(m2, md0, m3, content0[m, buf])] ⊕ pcache[datakey(ino, m), mkpentry(false, buf)]) ⊕ icache)[ino] |
⊦ ino ∈ icache ∧ ¬ icache[ino].inode.directory → (files ⊕ icache)[ino] = mkfile(icache[ino].inode.size, icache[ino].inode.meta, icache[ino].inode.nlink, files[ino].content)
files[ino] = mkfile(m2, md0, m3, content0), ((files ⊕ pcache) ⊕ icache)[ino] = mkfile(m0, md, m1, content), ino ∈ icache, ino ∈ files ⊦ mkfile(m0, md, m1, content[m, buf]) = ((files[ino, mkfile(m2, md0, m3, content0[m, buf])] ⊕ pcache[datakey(ino, m), mkpentry(false, buf)]) ⊕ icache)[ino], ino ∈ icache ∧ ¬ icache[ino].inode.directory
files[ino] = mkfile(m2, md0, m3, content0), ((files ⊕ pcache) ⊕ icache)[ino] = mkfile(m0, md, m1, content), ino ∈ files, ino ∈ icache ⊦ mkfile(m0, md, m1, content[m, buf]) = mkfile (icache[ino].inode.size, icache[ino].inode.meta, icache[ino].inode.nlink, (files[ino, mkfile(m2, md0, m3, content0[m, buf])] ⊕ pcache[datakey(ino, m), mkpentry(false, buf)])[ino].content), icache[ino].inode.directory
Used terms: ino, icache, files[ino, mkfile(m2, md0, m3, content0[m, buf])] ⊕ pcache[datakey(ino, m), mkpentry(false, buf)]