| pcache[datakey(ino0, n)] = mkpentry(true, buf), dirs0[m0] = mkdir(m3, md1, # links(m0, dirs0), m5, entries0), icache0[ino0] = mkientry(boolvar0, inode), afs-cons(dirs0, files), afs-cons ((dirs0[m0, mkdir(m3 + 1, md1, # links(m0, dirs0), m5 + 1, entries0[str, ino0])] ++ ino0)[ino0, mkdir(0, md, 1, 0, ∅)] [m0, mkdir(m3 + 1, md2, # links(m0, dirs0), m5 + 1, entries0[str, ino0]) ], files), synced(dirs0, icache0, pcache), datakey(ino0, n) ∈ pcache, m0 ∈ dirs0, asynced1 → synced(files, icache0, pcache), ∀ key. key ∈ pcache → key.data? ∧ # pcache[key].page = VFS_PAGE_SIZE ∧ key.ino ∈ files ∧ (¬ pcache[key].dirty → key.part ∈ files[key.ino].content ∧ pcache[key].page = files[key.ino].content[key.part]), links(m0, dirs0) ≠ ∅ ∨ m0 = ROOT_INO ⊦ ino0 = 0, ino0 ∈ dirs0, ino0 ∈ files, str ∈ entries0 |
Used simplifier rules: ⊦ datakey(m, m0).data?; (s)% ⊦ datakey(m, m0).ino = m; (s) Used terms: datakey(ino0, n)