| 252 | } |
| 253 | |
| 254 | void MutationImpl::apply() |
| 255 | { |
| 256 | for (auto& obj : projected_nodes) { |
| 257 | if (CInode *in = dynamic_cast<CInode*>(obj)) |
| 258 | in->pop_and_dirty_projected_inode(ls, nullptr); |
| 259 | } |
| 260 | |
| 261 | for (const auto& in : dirty_cow_inodes) { |
| 262 | in->_mark_dirty(ls); |
| 263 | } |
| 264 | |
| 265 | for (const auto& [dn, v] : dirty_cow_dentries) { |
| 266 | dn->mark_dirty(v, ls); |
| 267 | } |
| 268 | |
| 269 | for (auto& obj : projected_nodes) { |
| 270 | if (CDir *dir = dynamic_cast<CDir*>(obj)) |
| 271 | dir->pop_and_dirty_projected_fnode(ls, nullptr); |
| 272 | } |
| 273 | |
| 274 | for (const auto& lock : updated_locks) { |
| 275 | lock->mark_dirty(); |
| 276 | } |
| 277 | |
| 278 | projected_nodes.clear(); |
| 279 | } |
| 280 | |
| 281 | void MutationImpl::cleanup() |
| 282 | { |
no test coverage detected