]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: rip out old purge_inode crap
authorSage Weil <sage@newdream.net>
Fri, 30 Jan 2009 19:22:40 +0000 (11:22 -0800)
committerSage Weil <sage@newdream.net>
Fri, 30 Jan 2009 19:44:33 +0000 (11:44 -0800)
src/Makefile.am
src/mds/LogEvent.cc
src/mds/LogEvent.h
src/mds/LogSegment.h
src/mds/MDCache.cc
src/mds/MDCache.h
src/mds/MDS.cc
src/mds/events/EMetaBlob.h
src/mds/events/EPurgeFinish.h [deleted file]
src/mds/journal.cc

index 714a06006060bfc54c1d44015d0e848c57066961..26818e7c1c23b937de971a0adbd26cd875a1562a 100644 (file)
@@ -414,7 +414,6 @@ noinst_HEADERS = \
         mds/events/EImportStart.h\
         mds/events/EMetaBlob.h\
         mds/events/EOpen.h\
-        mds/events/EPurgeFinish.h\
         mds/events/ESession.h\
         mds/events/ESessions.h\
         mds/events/ESlaveUpdate.h\
index f0fb9e4c87de74cf60dd5c3a01b711bbf8929429..444fe7d867754e90d56d5e57e64643cbba25110c 100644 (file)
@@ -34,8 +34,6 @@
 #include "events/EOpen.h"
 #include "events/ECommitted.h"
 
-#include "events/EPurgeFinish.h"
-
 #include "events/ETableClient.h"
 #include "events/ETableServer.h"
 
@@ -71,8 +69,6 @@ LogEvent *LogEvent::decode(bufferlist& bl)
   case EVENT_OPEN: le = new EOpen; break;
   case EVENT_COMMITTED: le = new ECommitted; break;
 
-  case EVENT_PURGEFINISH: le = new EPurgeFinish; break;
-
   case EVENT_TABLECLIENT: le = new ETableClient; break;
   case EVENT_TABLESERVER: le = new ETableServer; break;
 
index 151ae5df90b4c488fe5a5d2802442cd9d8aed98e..64e7e4fad9dc5f0468f6a1f6c696152a63ce7560 100644 (file)
@@ -31,8 +31,6 @@
 #define EVENT_OPEN         22
 #define EVENT_COMMITTED    23
 
-#define EVENT_PURGEFINISH  30
-
 #define EVENT_TABLECLIENT  42
 #define EVENT_TABLESERVER  43
 
index 7ad78df59f6b04f08565e242acfc3486a6827e52..61841d450ade97bb77b8bba532e47bba0bf67674 100644 (file)
@@ -49,7 +49,6 @@ class LogSegment {
 
   //xlist<CInode*>  purging_inodes;
   set<CInode*> truncating_inodes;
-  map<CInode*, map<loff_t,loff_t> > purging_inodes;
 
   map<int, hash_set<version_t> > pending_commit_tids;  // mdstable
   set<metareqid_t> uncommitted_masters;
index b8c6a942f9e9986313bc789a0b5fe6d6624717db..a57833abe6962290f4356bda40ea358347601733 100644 (file)
@@ -43,7 +43,6 @@
 #include "events/EUpdate.h"
 #include "events/ESlaveUpdate.h"
 #include "events/EString.h"
-#include "events/EPurgeFinish.h"
 #include "events/EImportFinish.h"
 #include "events/EFragment.h"
 #include "events/ECommitted.h"
@@ -4201,154 +4200,6 @@ void MDCache::start_recovered_truncates()
 
 
 
-// ----------------------------
-// purge
-
-class C_MDC_PurgeFinish : public Context {
-  MDCache *mdc;
-  CInode *in;
-  loff_t newsize, oldsize;
-public:
-  C_MDC_PurgeFinish(MDCache *c, CInode *i, loff_t ns, loff_t os) :
-    mdc(c), in(i), newsize(ns), oldsize(os) {}
-  void finish(int r) {
-    mdc->purge_inode_finish(in, newsize, oldsize);
-  }
-};
-class C_MDC_PurgeFinish2 : public Context {
-  MDCache *mdc;
-  CInode *in;
-  loff_t newsize, oldsize;
-public:
-  C_MDC_PurgeFinish2(MDCache *c, CInode *i, loff_t ns, loff_t os) : 
-    mdc(c), in(i), newsize(ns), oldsize(os) {}
-  void finish(int r) {
-    mdc->purge_inode_finish_2(in, newsize, oldsize);
-  }
-};
-
-/* purge_inode in
- * will be called by on unlink or rmdir or purge
- * caller responsible for journaling a matching EUpdate
- */
-void MDCache::purge_inode(CInode *in, loff_t newsize, loff_t oldsize, LogSegment *ls)
-{
-  dout(10) << "purge_inode " << oldsize << " -> " << newsize
-          << " on " << *in
-          << dendl;
-
-  assert(oldsize >= newsize);
-
-  purging[in][newsize] = oldsize;
-  purging_ls[in][newsize] = ls;
-  ls->purging_inodes[in][newsize] = oldsize;
-  
-  _do_purge_inode(in, newsize, oldsize);
-}
-
-void MDCache::_do_purge_inode(CInode *in, loff_t newsize, loff_t oldsize)
-{
-  SnapContext nullsnap;
-  in->get(CInode::PIN_PURGING);
-
-  // remove
-  if (newsize < oldsize) {
-    SnapRealm *realm = in->find_snaprealm();
-    const SnapContext *snapc;
-    if (realm) {
-      dout(10) << "_do_purge_inode realm " << *realm << dendl;
-      snapc = &realm->get_snap_context();
-    } else {
-      dout(10) << "_do_purge_inode NO realm, using null context" << dendl;
-      snapc = &nullsnap;
-      assert(in->last == CEPH_NOSNAP);
-    }
-    dout(10) << "_do_purge_inode snapc " << snapc << " on " << *in << dendl;
-    mds->filer->remove(in->inode.ino, &in->inode.layout, *snapc,
-                      newsize, oldsize-newsize, 0,
-                      0, new C_MDC_PurgeFinish(this, in, newsize, oldsize));
-  } else {
-    // no need, empty file, just log it
-    purge_inode_finish(in, newsize, oldsize);
-  }
-}
-
-void MDCache::purge_inode_finish(CInode *in, loff_t newsize, loff_t oldsize)
-{
-  dout(10) << "purge_inode_finish " << oldsize << " -> " << newsize
-          << " on " << *in << dendl;
-  
-  // log completion
-  mds->mdlog->submit_entry(new EPurgeFinish(in->ino(), newsize, oldsize),
-                          new C_MDC_PurgeFinish2(this, in, newsize, oldsize));
-}
-
-void MDCache::purge_inode_finish_2(CInode *in, loff_t newsize, loff_t oldsize)
-{
-  dout(10) << "purge_inode_finish_2 " << oldsize << " -> " << newsize 
-          << " on " << *in << dendl;
-
-  // remove from purging list
-  LogSegment *ls = purging_ls[in][newsize];
-  purging[in].erase(newsize);
-  purging_ls[in].erase(newsize);
-  if (purging[in].empty()) {
-    purging.erase(in);
-    purging_ls.erase(in);
-  }
-
-  assert(ls->purging_inodes.count(in));
-  assert(ls->purging_inodes[in].count(newsize));
-  assert(ls->purging_inodes[in][newsize] == oldsize);
-  ls->purging_inodes[in].erase(newsize);
-  if (ls->purging_inodes[in].empty())
-    ls->purging_inodes.erase(in);
-  
-  in->put(CInode::PIN_PURGING);
-
-  // tell anyone who cares (log flusher?)
-  if (purging.count(in) == 0 ||
-      purging[in].rbegin()->first < newsize) {
-    list<Context*> ls;
-    ls.swap(waiting_for_purge[in][newsize]);
-    waiting_for_purge[in].erase(newsize);
-    if (waiting_for_purge[in].empty())
-      waiting_for_purge.erase(in);
-    finish_contexts(ls, 0);
-  }
-}
-
-void MDCache::add_recovered_purge(CInode *in, loff_t newsize, loff_t oldsize, LogSegment *ls)
-{
-  assert(purging[in].count(newsize) == 0);
-  purging[in][newsize] = oldsize;
-  purging_ls[in][newsize] = ls;
-  ls->purging_inodes[in][newsize] = oldsize;
-}
-
-void MDCache::remove_recovered_purge(CInode *in, loff_t newsize, loff_t oldsize)
-{
-  purging[in].erase(newsize);
-}
-
-void MDCache::start_recovered_purges()
-{
-  dout(10) << "start_recovered_purges (" << purging.size() << " purges)" << dendl;
-
-  for (map<CInode*, map<loff_t, loff_t> >::iterator p = purging.begin();
-       p != purging.end();
-       ++p) {
-    for (map<loff_t,loff_t>::iterator q = p->second.begin();
-        q != p->second.end();
-        ++q) {
-      dout(10) << "start_recovered_purges " 
-              << q->second << " -> " << q->first
-              << " on " << *p->first
-              << dendl;
-      _do_purge_inode(p->first, q->first, q->second);
-    }
-  }
-}
 
 
 
index d572bc954b6589da73da466215a4c5c1ea209e11..a50b44fde9d7ba2f5360c8b00efad668061931f0 100644 (file)
@@ -833,22 +833,6 @@ public:
   void remove_recovered_truncate(CInode *in);
   void start_recovered_truncates();
 
-  // inode purging
-  void purge_inode(CInode *in, loff_t newsize, loff_t oldsize, LogSegment *ls);
-  void _do_purge_inode(CInode *in, loff_t newsize, loff_t oldsize);
-  void purge_inode_finish(CInode *in, loff_t newsize, loff_t oldsize);
-  void purge_inode_finish_2(CInode *in, loff_t newsize, loff_t oldsize);
-  bool is_purging(CInode *in, loff_t newsize, loff_t oldsize) {
-    return purging.count(in) && purging[in].count(newsize);
-  }
-  void wait_for_purge(CInode *in, loff_t newsize, Context *c) {
-    waiting_for_purge[in][newsize].push_back(c);
-  }
-
-  void add_recovered_purge(CInode *in, loff_t newsize, loff_t oldsize, LogSegment *ls);
-  void remove_recovered_purge(CInode *in, loff_t newsize, loff_t oldsize);
-  void start_recovered_purges();
-
 
  public:
   CDir *get_auth_container(CDir *in);
index d07c013ed8144c32c26609ca02dee6fa7f3d0550..f161799b85269143aef152e094668bb65c3b374e 100644 (file)
@@ -1031,7 +1031,6 @@ void MDS::recovery_done()
   snapclient->finish_recovery();
   
   mdcache->start_recovered_truncates();
-  mdcache->start_recovered_purges();
   mdcache->do_file_recover();
   
   // tell connected clients
index 0d269b8706783e5e38661857489214a7fa047fa2..dbd8ab51c376fc263ed6f74902cbae54afbe4cbe 100644 (file)
@@ -336,7 +336,6 @@ private:
   list<inodeno_t> truncate_start;        // start truncate 
   map<inodeno_t,__u64> truncate_finish;  // finished truncate (started in segment blah)
 
-  list< triple<inodeno_t,uint64_t,uint64_t> > purging_inodes;
   vector<inodeno_t> destroyed_inodes;
 
   // idempotent op(s)
@@ -356,7 +355,6 @@ private:
     ::encode(sessionmapv, bl);
     ::encode(truncate_start, bl);
     ::encode(truncate_finish, bl);
-    ::encode(purging_inodes, bl);
     ::encode(destroyed_inodes, bl);
     ::encode(client_reqs, bl);
   } 
@@ -373,7 +371,6 @@ private:
     ::decode(sessionmapv, bl);
     ::decode(truncate_start, bl);
     ::decode(truncate_finish, bl);
-    ::decode(purging_inodes, bl);
     ::decode(destroyed_inodes, bl);
     ::decode(client_reqs, bl);
   }
@@ -429,9 +426,6 @@ private:
     truncate_finish[ino] = segoff;
   }
 
-  void add_inode_purge(inodeno_t ino, uint64_t newsize, uint64_t oldsize) {
-    purging_inodes.push_back(triple<inodeno_t,uint64_t,uint64_t>(ino, newsize, oldsize));
-  }
   void add_destroyed_inode(inodeno_t ino) {
     destroyed_inodes.push_back(ino);
   }
diff --git a/src/mds/events/EPurgeFinish.h b/src/mds/events/EPurgeFinish.h
deleted file mode 100644 (file)
index f6e8c44..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- 
-// vim: ts=8 sw=2 smarttab
-/*
- * Ceph - scalable distributed file system
- *
- * Copyright (C) 2004-2006 Sage Weil <sage@newdream.net>
- *
- * This is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software 
- * Foundation.  See file COPYING.
- * 
- */
-
-#ifndef __EPURGE_H
-#define __EPURGE_H
-
-#include "config.h"
-#include "include/types.h"
-
-class EPurgeFinish : public LogEvent {
- protected:
-  inodeno_t ino;
-  off_t newsize, oldsize;
-
- public:
-  EPurgeFinish(inodeno_t i, off_t ns, off_t os) : 
-       LogEvent(EVENT_PURGEFINISH),
-       ino(i), newsize(ns), oldsize(os) { }
-  EPurgeFinish() : LogEvent(EVENT_PURGEFINISH) { }
-  
-  void print(ostream& out) {
-    out << "purgefinish " << ino << " " << oldsize << " ->" << newsize;
-  }
-
-  void encode(bufferlist &bl) const {
-    ::encode(ino, bl);
-    ::encode(newsize, bl);
-    ::encode(oldsize, bl);
-  }
-  void decode(bufferlist::iterator &bl) {
-    ::decode(ino, bl);
-    ::decode(newsize, bl);
-    ::decode(oldsize, bl);
-  }
-  
-  void update_segment();
-  void replay(MDS *mds);
-};
-
-#endif
index e583008b25de35ee18a275ff8fca168f4173295e..8cde8cb94c0c9d1fd9bfd663843876361e967c85 100644 (file)
@@ -25,8 +25,6 @@
 #include "events/EOpen.h"
 #include "events/ECommitted.h"
 
-#include "events/EPurgeFinish.h"
-
 #include "events/EExport.h"
 #include "events/EImportStart.h"
 #include "events/EImportFinish.h"
@@ -239,16 +237,6 @@ C_Gather *LogSegment::try_to_expire(MDS *mds)
     (*p)->add_waiter(CInode::WAIT_TRUNC, gather->new_sub());
   }
   
-  // purging
-  for (map<CInode*, map<loff_t,loff_t> >::iterator p = purging_inodes.begin();
-       p != purging_inodes.end();
-       ++p) {
-    CInode *in = p->first;
-    dout(10) << "try_to_expire waiting for purge of " << *in << dendl;
-    if (!gather) gather = new C_Gather;
-    mds->mdcache->wait_for_purge(in, p->second.begin()->first, gather->new_sub());
-  }
-
   // FIXME client requests...?
   // audit handling of anchor transactions?
 
@@ -586,18 +574,6 @@ void EMetaBlob::replay(MDS *mds, LogSegment *logseg)
     }
   }
 
-  // purging inodes
-  for (list< triple<inodeno_t,uint64_t,uint64_t> >::iterator p = purging_inodes.begin();
-       p != purging_inodes.end();
-       ++p) {
-    CInode *in = mds->mdcache->get_inode(p->first);
-    assert(in);
-    dout(10) << "EMetaBlob.replay will purging " 
-            << p->third << " -> " << p->second
-            << " on " << *in << dendl;
-    mds->mdcache->add_recovered_purge(in, p->second, p->third, logseg);
-  }
-
   // destroyed inodes
   for (vector<inodeno_t>::iterator p = destroyed_inodes.begin();
        p != destroyed_inodes.end();
@@ -945,30 +921,6 @@ void EFragment::replay(MDS *mds)
 
 
 
-// -----------------------
-// EPurgeFinish
-
-
-void EPurgeFinish::update_segment()
-{
-  // ** update purge lists?
-}
-
-void EPurgeFinish::replay(MDS *mds)
-{
-  dout(10) << "EPurgeFinish.replay " << ino << " " << oldsize << " -> " << newsize << dendl;
-  CInode *in = mds->mdcache->get_inode(ino);
-
-  // if we don't have *in at this point, it's because purge_stray is lazy and
-  // doesn't jouranl it's intent to purge.  no worries, if *in isn't in the cache,
-  // it's not in the purge table either.  we'll eval_stray when we finish
-  // recovery.
-  //assert(in);
-  if (in)
-    mds->mdcache->remove_recovered_purge(in, newsize, oldsize);
-}
-
-