From: Sage Weil Date: Tue, 24 Aug 2010 19:12:16 +0000 (-0700) Subject: mds: fix snaprealm create split X-Git-Tag: v0.22~229^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c9b1c54ad522bf1b141ac98be029184b67bd44f0;p=ceph.git mds: fix snaprealm create split Need to check if diri->snaprealm is set _before_ popping the dirty inode (and new snaprealm!). --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index f2d1df9c6cc3..0d44b2ea63ca 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -5744,13 +5744,14 @@ void Server::_mksnap_finish(MDRequest *mdr, CInode *diri, SnapInfo &info) { dout(10) << "_mksnap_finish " << *mdr << " " << info << dendl; + int op = (diri->snaprealm? CEPH_SNAP_OP_CREATE : CEPH_SNAP_OP_SPLIT); + diri->pop_and_dirty_projected_inode(mdr->ls); mdr->apply(); mds->snapclient->commit(mdr->more()->stid, mdr->ls); // create snap - int op = (diri->snaprealm? CEPH_SNAP_OP_CREATE : CEPH_SNAP_OP_SPLIT); dout(10) << "snaprealm now " << *diri->snaprealm << dendl; mdcache->do_realm_invalidate_and_update_notify(diri, op);