EUpdate *le = new EUpdate(mds->mdlog, "create system file");
predirty_journal_parents(mut, &le->metablob, in, dir, PREDIRTY_PRIMARY|PREDIRTY_DIR, 1);
- le->metablob.add_primary_dentry(dn, true, in, &in->inode);
+ le->metablob.add_primary_dentry(dn, true, in);
if (mdir)
le->metablob.add_dir(mdir, true, true, true); // dirty AND complete AND new
CDentry *dn = in->get_projected_parent_dn();
if (!dn->get_projected_linkage()->is_null()) // no need to cow a null dentry
journal_cow_dentry(mut, metablob, dn, follows);
- return metablob->add_primary_dentry(dn, true, in, in->get_projected_inode());
+ return metablob->add_primary_dentry(dn, true, in);
}
}
}
in->parent->first = in->first;
- le->metablob.add_primary_dentry(in->parent, true, in, in->get_projected_inode());
+ le->metablob.add_primary_dentry(in->parent, true, in);
mds->mdlog->submit_entry(le, new C_MDC_QueuedCow(this, in, mut));
mds->mdlog->flush();
}
EUpdate *le = new EUpdate(mds->mdlog, "truncate finish");
le->metablob.add_dir_context(in->get_parent_dir());
- le->metablob.add_primary_dentry(in->get_projected_parent_dn(), true, in, pi);
+ le->metablob.add_primary_dentry(in->get_projected_parent_dn(), true, in);
le->metablob.add_truncate_finish(in->ino(), ls->offset);
journal_dirty_inode(mut, &le->metablob, in);
predirty_journal_parents(mut, &le->metablob, in, 0, PREDIRTY_PRIMARY);
journal_cow_inode(mut, &le->metablob, in);
- le->metablob.add_primary_dentry(in->get_projected_parent_dn(), true, 0, pi, 0, &snapbl);
+ le->metablob.add_primary_dentry(in->get_projected_parent_dn(), true, in, 0, &snapbl);
mds->mdlog->submit_entry(le, new C_MDC_snaprealm_create_finish(this, mdr, mut, in));
mds->mdlog->flush();
le->metablob.add_client_req(req->get_reqid());
mdcache->predirty_journal_parents(mdr, &le->metablob, cur, 0, PREDIRTY_PRIMARY, false);
mdcache->journal_cow_inode(mdr, &le->metablob, cur);
- le->metablob.add_primary_dentry(cur->get_projected_parent_dn(), true, cur, pi, 0, 0, px);
+ le->metablob.add_primary_dentry(cur->get_projected_parent_dn(), true, cur, 0, 0, px);
journal_and_reply(mdr, cur, 0, le, new C_MDS_inode_update_finish(mds, mdr, cur));
}
le->metablob.add_client_req(req->get_reqid());
mdcache->predirty_journal_parents(mdr, &le->metablob, cur, 0, PREDIRTY_PRIMARY, false);
mdcache->journal_cow_inode(mdr, &le->metablob, cur);
- le->metablob.add_primary_dentry(cur->get_projected_parent_dn(), true, cur, pi, 0, 0, px);
+ le->metablob.add_primary_dentry(cur->get_projected_parent_dn(), true, cur, 0, 0, px);
journal_and_reply(mdr, cur, 0, le, new C_MDS_inode_update_finish(mds, mdr, cur));
}
le->metablob.add_client_req(req->get_reqid());
journal_allocated_inos(mdr, &le->metablob);
mdcache->predirty_journal_parents(mdr, &le->metablob, newi, dn->get_dir(), PREDIRTY_PRIMARY|PREDIRTY_DIR, 1);
- le->metablob.add_primary_dentry(dn, true, newi, &newi->inode);
+ le->metablob.add_primary_dentry(dn, true, newi);
le->metablob.add_dir(newdir, true, true, true); // dirty AND complete AND new
// issue a cap on the directory
ESlaveUpdate::OP_ROLLBACK, ESlaveUpdate::LINK);
le->commit.add_dir_context(parent);
le->commit.add_dir(parent, true);
- le->commit.add_primary_dentry(in->get_parent_dn(), true, 0, pi);
+ le->commit.add_primary_dentry(in->get_parent_dn(), true, 0);
mdlog->submit_entry(le, new C_MDS_LoggedLinkRollback(this, mut, mdr));
mdlog->flush();
dnl->get_inode()->snaprealm->project_past_parent(straydn->get_dir()->inode->find_snaprealm(), snapbl);
straydn->first = dnl->get_inode()->first;
- le->metablob.add_primary_dentry(straydn, true, dnl->get_inode(), pi, 0, &snapbl);
+ le->metablob.add_primary_dentry(straydn, true, dnl->get_inode(), 0, &snapbl);
} else {
// remote link. update remote inode.
mdcache->predirty_journal_parents(mdr, &le->metablob, dnl->get_inode(), dn->get_dir(), PREDIRTY_DIR, -1);
} else
destdnl->get_inode()->snaprealm->project_past_parent(straydn->get_dir()->inode->find_snaprealm(), snapbl);
straydn->first = destdnl->get_inode()->first;
- tji = metablob->add_primary_dentry(straydn, true, destdnl->get_inode(), tpi, 0, &snapbl);
+ tji = metablob->add_primary_dentry(straydn, true, destdnl->get_inode(), 0, &snapbl);
} else if (destdnl->is_remote()) {
metablob->add_dir_context(destdnl->get_inode()->get_parent_dir());
mdcache->journal_cow_dentry(mdr, metablob, destdnl->get_inode()->parent, CEPH_NOSNAP, 0, destdnl);
- tji = metablob->add_primary_dentry(destdnl->get_inode()->parent, true, destdnl->get_inode(), tpi);
+ tji = metablob->add_primary_dentry(destdnl->get_inode()->parent, true, destdnl->get_inode());
}
}
destdn->first = destdn->get_dir()->inode->find_snaprealm()->get_newest_seq()+1;
metablob->add_remote_dentry(destdn, true, srcdnl->get_remote_ino(), srcdnl->get_remote_d_type());
mdcache->journal_cow_dentry(mdr, metablob, srcdnl->get_inode()->get_parent_dn(), CEPH_NOSNAP, 0, srcdnl);
- ji = metablob->add_primary_dentry(srcdnl->get_inode()->get_parent_dn(), true, srcdnl->get_inode(), pi);
+ ji = metablob->add_primary_dentry(srcdnl->get_inode()->get_parent_dn(), true, srcdnl->get_inode());
} else {
if (!destdnl->is_null())
mdcache->journal_cow_dentry(mdr, metablob, destdn, CEPH_NOSNAP, 0, destdnl);
else
destdn->first = destdn->get_dir()->inode->find_snaprealm()->get_newest_seq()+1;
- metablob->add_primary_dentry(destdn, true, destdnl->get_inode(), pi);
+ metablob->add_primary_dentry(destdn, true, destdnl->get_inode());
}
} else if (srcdnl->is_primary()) {
// project snap parent update?
mdcache->journal_cow_dentry(mdr, metablob, destdn, CEPH_NOSNAP, 0, destdnl);
else
destdn->first = destdn->get_dir()->inode->find_snaprealm()->get_newest_seq()+1;
- ji = metablob->add_primary_dentry(destdn, true, srcdnl->get_inode(), pi, 0, &snapbl);
+ ji = metablob->add_primary_dentry(destdn, true, srcdnl->get_inode(), 0, &snapbl);
}
// src
ESlaveUpdate *le = new ESlaveUpdate(mdlog, "slave_rename_rollback", rollback.reqid, master,
ESlaveUpdate::OP_ROLLBACK, ESlaveUpdate::RENAME);
le->commit.add_dir_context(srcdir);
- le->commit.add_primary_dentry(srcdn, true, 0, pi);
+ le->commit.add_primary_dentry(srcdn, true, 0);
le->commit.add_dir_context(destdir);
if (destdnl->is_null())
le->commit.add_null_dentry(destdn, true);
else if (destdnl->is_primary())
- le->commit.add_primary_dentry(destdn, true, 0, ti);
+ le->commit.add_primary_dentry(destdn, true, 0);
else if (destdnl->is_remote())
le->commit.add_remote_dentry(destdn, true);
if (straydn) {
if (newrealm)
diri->close_snaprealm(true);
- le->metablob.add_primary_dentry(diri->get_projected_parent_dn(), true, 0, pi, 0, &snapbl);
+ le->metablob.add_primary_dentry(diri->get_projected_parent_dn(), true, 0, 0, &snapbl);
mdlog->submit_entry(le, new C_MDS_mksnap_finish(mds, mdr, diri, info));
mdlog->flush();
diri->snaprealm->snaps[snapid] = old_info;
diri->snaprealm->seq = old_seq;
diri->snaprealm->last_destroyed = old_ld;
- le->metablob.add_primary_dentry(diri->get_projected_parent_dn(), true, 0, pi, 0, &snapbl);
+ le->metablob.add_primary_dentry(diri->get_projected_parent_dn(), true, 0, 0, &snapbl);
mdlog->submit_entry(le, new C_MDS_rmsnap_finish(mds, mdr, diri, snapid));
mdlog->flush();
// return remote pointer to to-be-journaled inode
inode_t *add_primary_dentry(CDentry *dn, bool dirty,
- CInode *in=0, inode_t *pi=0, fragtree_t *pdft=0, bufferlist *psnapbl=0,
+ CInode *in=0, fragtree_t *pdft=0, bufferlist *psnapbl=0,
map<string,bufferptr> *px=0) {
return add_primary_dentry(add_dir(dn->get_dir(), false),
- dn, dirty, in, pi, pdft, psnapbl, px);
+ dn, dirty, in, pdft, psnapbl, px);
}
inode_t *add_primary_dentry(dirlump& lump, CDentry *dn, bool dirty,
- CInode *in=0, inode_t *pi=0, fragtree_t *pdft=0, bufferlist *psnapbl=0,
+ CInode *in=0, fragtree_t *pdft=0, bufferlist *psnapbl=0,
map<string,bufferptr> *px=0) {
if (!in)
in = dn->get_projected_linkage()->get_inode();
in->last_journaled = my_offset;
//cout << "journaling " << in->inode.ino << " at " << my_offset << std::endl;
- if (!pi) pi = in->get_projected_inode();
+ inode_t *pi = in->get_projected_inode();
if (!pdft) pdft = &in->dirfragtree;
if (!px) px = &in->xattrs;