struct C_MDS_LoggedLinkRollback : public Context {
Server *server;
- Mutation *mut;
+ MutationRef mut;
MDRequestRef mdr;
- C_MDS_LoggedLinkRollback(Server *s, Mutation *m, MDRequestRef& r) : server(s), mut(m), mdr(r) {}
+ C_MDS_LoggedLinkRollback(Server *s, MutationRef& m, MDRequestRef& r) : server(s), mut(m), mdr(r) {}
void finish(int r) {
server->_link_rollback_finish(mut, mdr);
}
mds->mdcache->add_rollback(rollback.reqid, master); // need to finish this update before resolve finishes
assert(mdr || mds->is_resolve());
- Mutation *mut = new Mutation(rollback.reqid);
+ MutationRef mut(new MutationImpl(rollback.reqid));
mut->ls = mds->mdlog->get_current_segment();
CInode *in = mds->mdcache->get_inode(rollback.ino);
mdlog->flush();
}
-void Server::_link_rollback_finish(Mutation *mut, MDRequestRef& mdr)
+void Server::_link_rollback_finish(MutationRef& mut, MDRequestRef& mdr)
{
dout(10) << "_link_rollback_finish" << dendl;
mds->mdcache->finish_rollback(mut->reqid);
mut->cleanup();
- delete mut;
}
}
}
-void _rollback_repair_dir(Mutation *mut, CDir *dir, rename_rollback::drec &r, utime_t ctime,
+void _rollback_repair_dir(MutationRef& mut, CDir *dir, rename_rollback::drec &r, utime_t ctime,
bool isdir, int linkunlink, nest_info_t &rstat)
{
fnode_t *pf;
struct C_MDS_LoggedRenameRollback : public Context {
Server *server;
- Mutation *mut;
+ MutationRef mut;
MDRequestRef mdr;
CDentry *srcdn;
version_t srcdnpv;
CDentry *destdn;
CDentry *straydn;
bool finish_mdr;
- C_MDS_LoggedRenameRollback(Server *s, Mutation *m, MDRequestRef& r,
+ C_MDS_LoggedRenameRollback(Server *s, MutationRef& m, MDRequestRef& r,
CDentry *sd, version_t pv, CDentry *dd,
CDentry *st, bool f) :
server(s), mut(m), mdr(r), srcdn(sd), srcdnpv(pv), destdn(dd),
// need to finish this update before sending resolve to claim the subtree
mds->mdcache->add_rollback(rollback.reqid, master);
- Mutation *mut = new Mutation(rollback.reqid);
+ MutationRef mut(new MutationImpl(rollback.reqid));
mut->ls = mds->mdlog->get_current_segment();
CDentry *srcdn = NULL;
mdlog->flush();
}
-void Server::_rename_rollback_finish(Mutation *mut, MDRequestRef& mdr, CDentry *srcdn,
+void Server::_rename_rollback_finish(MutationRef& mut, MDRequestRef& mdr, CDentry *srcdn,
version_t srcdnpv, CDentry *destdn,
CDentry *straydn, bool finish_mdr)
{
mds->mdcache->finish_rollback(mut->reqid);
mut->cleanup();
- delete mut;
}
/* This function DOES put the passed message before returning*/
void _committed_slave(MDRequestRef& mdr); // use for rename, too
void handle_slave_link_prep_ack(MDRequestRef& mdr, MMDSSlaveRequest *m);
void do_link_rollback(bufferlist &rbl, int master, MDRequestRef& mdr);
- void _link_rollback_finish(Mutation *mut, MDRequestRef& mdr);
+ void _link_rollback_finish(MutationRef& mut, MDRequestRef& mdr);
// unlink
void handle_client_unlink(MDRequestRef& mdr);
void _logged_slave_rename(MDRequestRef& mdr, CDentry *srcdn, CDentry *destdn, CDentry *straydn);
void _commit_slave_rename(MDRequestRef& mdr, int r, CDentry *srcdn, CDentry *destdn, CDentry *straydn);
void do_rename_rollback(bufferlist &rbl, int master, MDRequestRef& mdr, bool finish_mdr=false);
- void _rename_rollback_finish(Mutation *mut, MDRequestRef& mdr, CDentry *srcdn, version_t srcdnpv,
+ void _rename_rollback_finish(MutationRef& mut, MDRequestRef& mdr, CDentry *srcdn, version_t srcdnpv,
CDentry *destdn, CDentry *staydn, bool finish_mdr);
};