]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: switch all SnapRealm users to make use of snaprealm.
authorGreg Farnum <gregf@hq.newdream.net>
Thu, 12 Aug 2010 18:59:36 +0000 (11:59 -0700)
committerGreg Farnum <gregf@hq.newdream.net>
Mon, 16 Aug 2010 22:41:39 +0000 (15:41 -0700)
src/librados.cc
src/mds/CInode.cc
src/mds/MDCache.cc
src/mds/Server.cc

index 716de591f77472b7151adda6148384f9406d3734..5227afcf090429b0f58b9e69829aa73e1ccc4021 100644 (file)
@@ -819,23 +819,23 @@ int RadosClient::write(PoolCtx& pool, const object_t& oid, off_t off, bufferlist
   static SnapContext snapc;
   static int i;
 
-  snapc.snaps.clear();
+  snapc.snaprealm.snaps.clear();
 
 #define START_SNAP 1
 
-  if (snapc.seq == 0)
-    snapc.seq = START_SNAP - 1;
+  if (snapc.snaprealm.seq == 0)
+    snapc.snaprealm.seq = START_SNAP - 1;
 
-  ++snapc.seq;
-  for (i=0; i<snapc.seq-START_SNAP + 1; i++) {
-     snapc.snaps.push_back(snapc.seq - i);
+  ++snapc.snaprealm.seq;
+  for (i=0; i<snapc.snaprealm.seq-START_SNAP + 1; i++) {
+     snapc.snaprealm.snaps.push_back(snapc.snaprealm.seq - i);
   }
   i = 0;
-  for (vector<snapid_t>::iterator iter = snapc.snaps.begin();
-       iter != snapc.snaps.end(); ++iter, ++i) {
+  for (vector<snapid_t>::iterator iter = snapc.snaprealm.snaps.begin();
+       iter != snapc.snaprealm.snaps.end(); ++iter, ++i) {
     dout(0) << "snapc[" << i << "] = " << *iter << dendl;
   }
-  dout(0) << "seq=" << snapc.seq << dendl;
+  dout(0) << "seq=" << snapc.snaprealm.seq << dendl;
   dout(0) << "snapc=" << snapc << dendl;
 #endif
   utime_t ut = g_clock.now();
index 206c7bca4b310643b32ca3984a0cd29f872c05d8..f2174e08717a081c4f42c5b1d4a7fc1bd31f768d 100644 (file)
@@ -1176,9 +1176,9 @@ void CInode::decode_lock_state(int type, bufferlist& bl)
     {
       snapid_t seq = 0;
       if (snaprealm)
-       seq = snaprealm->seq;
+       seq = snaprealm->snaprealm.seq;
       decode_snap(p);
-      if (snaprealm && snaprealm->seq != seq)
+      if (snaprealm && snaprealm->snaprealm.seq != seq)
        mdcache->do_realm_invalidate_and_update_notify(this, seq ? CEPH_SNAP_OP_UPDATE:CEPH_SNAP_OP_SPLIT);
     }
     break;
index 3aa0b82a683b1437458f0a9fc8c5bad9a078a845..32f989be2dcf758dff18fc4e6cdaf90ab1c8b689 100644 (file)
@@ -265,7 +265,7 @@ CInode *MDCache::create_system_inode(inodeno_t ino, int mode)
     else
       in->inode_auth = pair<int,int>(in->ino() - MDS_INO_MDSDIR_OFFSET, CDIR_AUTH_UNKNOWN);
     in->open_snaprealm();  // empty snaprealm
-    in->snaprealm->seq = 1;
+    in->snaprealm->snaprealm.seq = 1;
   }
   
   add_inode(in);
@@ -6829,7 +6829,7 @@ void MDCache::snaprealm_create(MDRequest *mdr, CInode *in)
   ::decode(seq, p);
 
   SnapRealm t(this, in);
-  t.created = seq;
+  t.snaprealm.created = seq;
   bufferlist snapbl;
   ::encode(t, snapbl);
   
@@ -6920,9 +6920,9 @@ void MDCache::_snaprealm_create_finish(MDRequest *mdr, Mutation *mut, CInode *in
   ::decode(seq, p);
 
   in->open_snaprealm();
-  in->snaprealm->seq = seq;
-  in->snaprealm->created = seq;
-  in->snaprealm->current_parent_since = seq;
+  in->snaprealm->snaprealm.seq = seq;
+  in->snaprealm->snaprealm.created = seq;
+  in->snaprealm->snaprealm.current_parent_since = seq;
 
   do_realm_invalidate_and_update_notify(in, CEPH_SNAP_OP_SPLIT);
 
@@ -6996,7 +6996,7 @@ void MDCache::eval_stray(CDentry *dn)
          return;
        in->snaprealm->prune_past_parents();
        if (in->snaprealm->has_past_parents()) {
-         dout(20) << "  has past parents " << in->snaprealm->past_parents << dendl;
+         dout(20) << "  has past parents " << in->snaprealm->snaprealm.past_parents << dendl;
          return;  // not until some snaps are deleted.
        }
       }
index bd3a261a22f9acb50dae73ef0ba9bc2fd139a59e..c7ad7c42e2d6193a2857efd4448c5834feda0e38 100644 (file)
@@ -4102,7 +4102,7 @@ void Server::_unlink_local_finish(MDRequest *mdr,
     bool isnew = false;
     if (!straydnl->get_inode()->snaprealm) {
       straydnl->get_inode()->open_snaprealm();
-      straydnl->get_inode()->snaprealm->seq = oldparent->get_newest_seq();
+      straydnl->get_inode()->snaprealm->snaprealm.seq = oldparent->get_newest_seq();
       isnew = true;
     }
     straydnl->get_inode()->snaprealm->add_past_parent(oldparent);
@@ -4160,7 +4160,7 @@ bool Server::_dir_is_nonempty(MDRequest *mdr, CInode *in)
   assert(in->is_auth());
 
   
-  if (in->snaprealm && in->snaprealm->snaps.size())
+  if (in->snaprealm && in->snaprealm->snaprealm.snaps.size())
     return true; //in a snapshot!
 
   list<frag_t> frags;
@@ -4896,7 +4896,7 @@ void Server::_rename_apply(MDRequest *mdr, CDentry *srcdn, CDentry *destdn, CDen
        bool isnew = false;
        if (!straydnl->get_inode()->snaprealm) {
          straydnl->get_inode()->open_snaprealm();
-         straydnl->get_inode()->snaprealm->seq = oldparent->get_newest_seq();
+         straydnl->get_inode()->snaprealm->snaprealm.seq = oldparent->get_newest_seq();
          isnew = true;
        }
        straydnl->get_inode()->snaprealm->add_past_parent(oldparent);
@@ -5748,18 +5748,18 @@ void Server::handle_client_mksnap(MDRequest *mdr)
   if (!diri->snaprealm) {
     newrealm = true;
     diri->open_snaprealm(true);
-    diri->snaprealm->created = snapid;
-    diri->snaprealm->current_parent_since = snapid;
-  }
-  snapid_t old_seq = diri->snaprealm->seq;
-  snapid_t old_lc = diri->snaprealm->last_created;
-  diri->snaprealm->snaps[snapid] = info;
-  diri->snaprealm->seq = snapid;
-  diri->snaprealm->last_created = snapid;
+    diri->snaprealm->snaprealm.created = snapid;
+    diri->snaprealm->snaprealm.current_parent_since = snapid;
+  }
+  snapid_t old_seq = diri->snaprealm->snaprealm.seq;
+  snapid_t old_lc = diri->snaprealm->snaprealm.last_created;
+  diri->snaprealm->snaprealm.snaps[snapid] = info;
+  diri->snaprealm->snaprealm.seq = snapid;
+  diri->snaprealm->snaprealm.last_created = snapid;
   diri->encode_snap_blob(snapbl);
-  diri->snaprealm->snaps.erase(snapid);
-  diri->snaprealm->seq = old_seq;
-  diri->snaprealm->last_created = old_lc;
+  diri->snaprealm->snaprealm.snaps.erase(snapid);
+  diri->snaprealm->snaprealm.seq = old_seq;
+  diri->snaprealm->snaprealm.last_created = old_lc;
   if (newrealm)
     diri->close_snaprealm(true);
   
@@ -5783,13 +5783,13 @@ void Server::_mksnap_finish(MDRequest *mdr, CInode *diri, SnapInfo &info)
   int op = CEPH_SNAP_OP_CREATE;
   if (!diri->snaprealm) {
     diri->open_snaprealm();
-    diri->snaprealm->created = snapid;
-    diri->snaprealm->current_parent_since = snapid;
+    diri->snaprealm->snaprealm.created = snapid;
+    diri->snaprealm->snaprealm.current_parent_since = snapid;
     op = CEPH_SNAP_OP_SPLIT;
   }
-  diri->snaprealm->snaps[snapid] = info;
-  diri->snaprealm->seq = snapid;
-  diri->snaprealm->last_created = snapid;
+  diri->snaprealm->snaprealm.snaps[snapid] = info;
+  diri->snaprealm->snaprealm.seq = snapid;
+  diri->snaprealm->snaprealm.last_created = snapid;
   dout(10) << "snaprealm now " << *diri->snaprealm << dendl;
 
   mdcache->do_realm_invalidate_and_update_notify(diri, op);
@@ -5892,16 +5892,16 @@ void Server::handle_client_rmsnap(MDRequest *mdr)
   
   // project the snaprealm.. hack!
   bufferlist snapbl;
-  snapid_t old_seq = diri->snaprealm->seq;
-  snapid_t old_ld = diri->snaprealm->last_destroyed;
-  SnapInfo old_info = diri->snaprealm->snaps[snapid];
-  diri->snaprealm->snaps.erase(snapid);
-  diri->snaprealm->seq = seq;
-  diri->snaprealm->last_destroyed = seq;
+  snapid_t old_seq = diri->snaprealm->snaprealm.seq;
+  snapid_t old_ld = diri->snaprealm->snaprealm.last_destroyed;
+  SnapInfo old_info = diri->snaprealm->snaprealm.snaps[snapid];
+  diri->snaprealm->snaprealm.snaps.erase(snapid);
+  diri->snaprealm->snaprealm.seq = seq;
+  diri->snaprealm->snaprealm.last_destroyed = seq;
   diri->encode_snap_blob(snapbl);
-  diri->snaprealm->snaps[snapid] = old_info;
-  diri->snaprealm->seq = old_seq;
-  diri->snaprealm->last_destroyed = old_ld;
+  diri->snaprealm->snaprealm.snaps[snapid] = old_info;
+  diri->snaprealm->snaprealm.seq = old_seq;
+  diri->snaprealm->snaprealm.last_destroyed = old_ld;
   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));
@@ -5922,9 +5922,9 @@ void Server::_rmsnap_finish(MDRequest *mdr, CInode *diri, snapid_t snapid)
   mds->snapclient->commit(stid, mdr->ls);
 
   // remove snap
-  diri->snaprealm->snaps.erase(snapid);
-  diri->snaprealm->last_destroyed = seq;
-  diri->snaprealm->seq = seq;
+  diri->snaprealm->snaprealm.snaps.erase(snapid);
+  diri->snaprealm->snaprealm.last_destroyed = seq;
+  diri->snaprealm->snaprealm.seq = seq;
   dout(10) << "snaprealm now " << *diri->snaprealm << dendl;
 
   mdcache->do_realm_invalidate_and_update_notify(diri, CEPH_SNAP_OP_DESTROY);