]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: remove global Filer instance
authorJohn Spray <john.spray@redhat.com>
Mon, 29 Jun 2015 00:01:58 +0000 (01:01 +0100)
committerJohn Spray <john.spray@redhat.com>
Fri, 3 Jul 2015 10:57:45 +0000 (11:57 +0100)
Filer is cheap and stateless, no need to share one
instance across the whole process.  Let subsystems
create their own -- one less thing in the effectively
global MDS:: namespace.

Signed-off-by: John Spray <john.spray@redhat.com>
src/mds/MDCache.cc
src/mds/MDCache.h
src/mds/MDS.cc
src/mds/MDS.h
src/mds/RecoveryQueue.cc
src/mds/RecoveryQueue.h
src/mds/StrayManager.cc
src/mds/StrayManager.h

index 758c04cc074271c5a3fa1f4557c514cab8e0ec91..f2f1e0d6eb7fcd068ad31766c9b7a70d152e38c1 100644 (file)
@@ -168,6 +168,7 @@ public:
 
 MDCache::MDCache(MDS *m) :
   logger(0),
+  filer(m->objecter, &m->finisher),
   recovery_queue(m),
   stray_manager(m)
 {
@@ -6086,10 +6087,10 @@ void MDCache::_truncate_inode(CInode *in, LogSegment *ls)
     assert(in->last == CEPH_NOSNAP);
   }
   dout(10) << "_truncate_inode  snapc " << snapc << " on " << *in << dendl;
-  mds->filer->truncate(in->inode.ino, &in->inode.layout, *snapc,
-                      pi->truncate_size, pi->truncate_from-pi->truncate_size,
-                      pi->truncate_seq, utime_t(), 0,
-                      0, new C_OnFinisher(new C_IO_MDC_TruncateFinish(this, in,
+  filer.truncate(in->inode.ino, &in->inode.layout, *snapc,
+                pi->truncate_size, pi->truncate_from-pi->truncate_size,
+                pi->truncate_seq, utime_t(), 0,
+                0, new C_OnFinisher(new C_IO_MDC_TruncateFinish(this, in,
                                                                       ls),
                                           &mds->finisher));
 }
index 086e1abad1a4569541f9c6647057ff24941bda1a..48c0d412cd18023fc9a0ca13c7de5e45e3e356e7 100644 (file)
@@ -21,6 +21,7 @@
 #include "include/filepath.h"
 #include "include/elist.h"
 
+#include "osdc/Filer.h"
 #include "CInode.h"
 #include "CDentry.h"
 #include "CDir.h"
@@ -139,6 +140,8 @@ class MDCache {
 
   PerfCounters *logger;
 
+  Filer filer;
+
 public:
   void advance_stray() {
     stray_index = (stray_index+1)%NUM_STRAY;
index a97cf90d35d004bb66bfda14cd97c5ddbe75f41e..538f36c3eca560d22dc929849c8eeca54badec64 100644 (file)
@@ -132,8 +132,6 @@ MDS::MDS(const std::string &n, Messenger *m, MonClient *mc) :
   objecter = new Objecter(m->cct, messenger, monc, NULL, 0, 0);
   objecter->unset_honor_osdmap_full();
 
-  filer = new Filer(objecter, &finisher);
-
   mdcache = new MDCache(this);
   mdlog = new MDLog(this);
   balancer = new MDBalancer(this);
@@ -182,7 +180,6 @@ MDS::~MDS() {
   if (server) { delete server; server = 0; }
   if (locker) { delete locker; locker = 0; }
 
-  if (filer) { delete filer; filer = 0; }
   if (objecter) { delete objecter; objecter = 0; }
 
   if (logger) {
index 8fecfb745030707839cc486af5ed33dcd4e416f0..aa35f62f861dd24884df00b69abe6913e1b4fe99 100644 (file)
@@ -174,7 +174,6 @@ class MDS : public Dispatcher, public md_config_obs_t {
   MonClient    *monc;
   MDSMap       *mdsmap;
   Objecter     *objecter;
-  Filer        *filer;       // for reading/writing to/from osds
   LogClient    log_client;
   LogChannelRef clog;
 
index d23acc1cbdd40a278ebf8c3b509fa044f246e4ec..11938a15e94bbf89a2d0e7a13660d5f2e949d2cd 100644 (file)
@@ -47,6 +47,11 @@ public:
 };
 
 
+RecoveryQueue::RecoveryQueue(MDS *mds_)
+  : mds(mds_), logger(NULL), filer(mds_->objecter, &mds_->finisher)
+{}
+
+
 /**
  * Progress the queue.  Call this after enqueuing something or on
  * completion of something.
@@ -93,7 +98,7 @@ void RecoveryQueue::_start(CInode *in)
     file_recovering.insert(in);
 
     C_MDC_Recover *fin = new C_MDC_Recover(this, in);
-    mds->filer->probe(in->inode.ino, &in->inode.layout, in->last,
+    filer.probe(in->inode.ino, &in->inode.layout, in->last,
                      pi->get_max_size(), &fin->size, &fin->mtime, false,
                      0, fin);
   } else {
index 3fe04eed5909fb30d96b0c1b9b36121781b9752b..9b7a0e6ddbb46be27661a0fe7fabb96bd0892565 100644 (file)
@@ -19,6 +19,8 @@
 
 #include <set>
 
+#include "osdc/Filer.h"
+
 class CInode;
 class MDS;
 class PerfCounters;
@@ -28,7 +30,7 @@ public:
   void enqueue(CInode *in);
   void advance();
   void prioritize(CInode *in);   ///< do this inode now/soon
-  RecoveryQueue(MDS *mds_) : mds(mds_), logger(NULL) {}
+  RecoveryQueue(MDS *mds_);
 
   void set_logger(PerfCounters *p) {logger=p;}
 
@@ -41,6 +43,7 @@ private:
   void _recovered(CInode *in, int r, uint64_t size, utime_t mtime);
   MDS *mds;
   PerfCounters *logger;
+  Filer filer;
 
   friend class C_MDC_Recover;
 };
index 71b776a69c54f48aa1bb32ced097c9f8d72906df..4f1155c55f15076e16a898bb6eb5c50b68e4f32d 100644 (file)
@@ -139,7 +139,7 @@ void StrayManager::purge(CDentry *dn, uint32_t op_allowance)
       uint64_t num = (to + period - 1) / period;
       dout(10) << __func__ << " 0~" << to << " objects 0~" << num
               << " snapc " << snapc << " on " << *in << dendl;
-      mds->filer->purge_range(in->inode.ino, &in->inode.layout, *snapc,
+      filer.purge_range(in->inode.ino, &in->inode.layout, *snapc,
                              0, num, ceph_clock_now(g_ceph_context), 0,
                              gather.new_sub());
     }
@@ -747,11 +747,12 @@ void StrayManager::migrate_stray(CDentry *dn, mds_rank_t to)
   mds->send_message_mds(req, to);
 }
 
-  StrayManager::StrayManager(MDS *mds)
+StrayManager::StrayManager(MDS *mds)
   : delayed_eval_stray(member_offset(CDentry, item_stray)),
     mds(mds), logger(NULL),
     ops_in_flight(0), files_purging(0),
-    num_strays(0), num_strays_purging(0), num_strays_delayed(0)
+    num_strays(0), num_strays_purging(0), num_strays_delayed(0),
+    filer(mds->objecter, &mds->finisher)
 {
   assert(mds != NULL);
   update_op_limit();
@@ -812,14 +813,14 @@ void StrayManager::truncate(CDentry *dn, uint32_t op_allowance)
     uint64_t num = (to - 1) / period;
     dout(10) << __func__ << " 0~" << to << " objects 0~" << num
       << " snapc " << snapc << " on " << *in << dendl;
-    mds->filer->purge_range(in->ino(), &in->inode.layout, *snapc,
+    filer.purge_range(in->ino(), &in->inode.layout, *snapc,
                            1, num, ceph_clock_now(g_ceph_context),
                            0, gather.new_sub());
   }
 
   // keep backtrace object
   if (period && to > 0) {
-    mds->filer->zero(in->ino(), &in->inode.layout, *snapc,
+    filer.zero(in->ino(), &in->inode.layout, *snapc,
                     0, period, ceph_clock_now(g_ceph_context),
                     0, true, NULL, gather.new_sub());
   }
index d508017e45ff17e3fc72f8d64cee881ae9d0007c..312e18f91ab13c5020502c69f63a316c16a22702 100644 (file)
@@ -16,6 +16,7 @@
 
 #include "include/elist.h"
 #include <list>
+#include "osdc/Filer.h"
 
 class MDS;
 class PerfCounters;
@@ -56,6 +57,8 @@ class StrayManager : public md_config_obs_t
   uint64_t num_strays_purging;
   uint64_t num_strays_delayed;
 
+  Filer filer;
+
   void truncate(CDentry *dn, uint32_t op_allowance);
 
   /**