From c9b1c54ad522bf1b141ac98be029184b67bd44f0 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 24 Aug 2010 12:12:16 -0700 Subject: [PATCH] mds: fix snaprealm create split Need to check if diri->snaprealm is set _before_ popping the dirty inode (and new snaprealm!). --- src/mds/Server.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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); -- 2.47.3