]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: clean up layouts
authorSage Weil <sage@newdream.net>
Thu, 30 Apr 2009 17:42:26 +0000 (10:42 -0700)
committerSage Weil <sage@newdream.net>
Thu, 30 Apr 2009 17:42:26 +0000 (10:42 -0700)
22 files changed:
src/config.cc
src/config.h
src/dumpjournal.cc
src/kernel/mdsmap.c
src/kernel/mdsmap.h
src/mds/AnchorServer.cc
src/mds/CDir.cc
src/mds/CInode.cc
src/mds/InoTable.cc
src/mds/MDCache.cc
src/mds/MDCache.h
src/mds/MDLog.cc
src/mds/MDS.cc
src/mds/MDSMap.h
src/mds/MDSTable.cc
src/mds/MDSTable.h
src/mds/Server.cc
src/mds/SessionMap.cc
src/mds/SessionMap.h
src/mds/SnapServer.cc
src/mon/MDSMonitor.cc
src/osdc/Objecter.h

index 21ee85b8f6c237499371d8c32ba602b74d1e34a6..75b365658a1f77550207bd26c6a2f5c440c48176 100644 (file)
@@ -84,49 +84,9 @@ struct ceph_file_layout g_default_file_layout = {
  fl_object_size: init_le32(1<<22),
  fl_cas_hash: init_le32(0),
  fl_object_stripe_unit: init_le32(0),
- fl_pg_preferred: init_le32(-1),
- fl_pg_pool: {CEPH_DATA_RULE},
 };
 
-struct ceph_file_layout g_default_casdata_layout = {
- fl_stripe_unit: init_le32(1<<22),
- fl_stripe_count: init_le32(1),
- fl_object_size: init_le32(1<<22),
- fl_cas_hash: init_le32(0),
- fl_object_stripe_unit: init_le32(0),
- fl_pg_preferred: init_le32(-1),
- fl_pg_pool: {CEPH_CASDATA_RULE},
-};
-
-struct ceph_file_layout g_default_mds_dir_layout = {
- fl_stripe_unit: init_le32(1<<22),
- fl_stripe_count: init_le32(1),
- fl_object_size: init_le32(1<<22),
- fl_cas_hash: init_le32(0),
- fl_object_stripe_unit: init_le32(0),
- fl_pg_preferred: init_le32(-1),
- fl_pg_pool: {CEPH_METADATA_RULE},
-};
 
-struct ceph_file_layout g_default_mds_log_layout = {
- fl_stripe_unit: init_le32(1<<20),
- fl_stripe_count: init_le32(1),
- fl_object_size: init_le32(1<<20),
- fl_cas_hash: init_le32(0),
- fl_object_stripe_unit: init_le32(0),
- fl_pg_preferred: init_le32(-1),
- fl_pg_pool: {CEPH_METADATA_RULE},
-};
-
-struct ceph_file_layout g_default_mds_anchortable_layout = {
- fl_stripe_unit: init_le32(1<<20),
- fl_stripe_count: init_le32(1),
- fl_object_size: init_le32(1<<20),
- fl_cas_hash: init_le32(0),
- fl_object_stripe_unit: init_le32(0),
- fl_pg_preferred: init_le32(-1),
- fl_pg_pool: {CEPH_METADATA_RULE},
-};
 
 #include <msg/msg_types.h>
 
index f76dd7946e0d87bdb3301b62452a7666f8f6ea52..6137352ded8c73cd4eb43549c074d4cd3ba1e0ff 100644 (file)
 #define __CEPH_CONFIG_H
 
 extern struct ceph_file_layout g_default_file_layout;
-extern struct ceph_file_layout g_default_casdata_layout;
-extern struct ceph_file_layout g_default_mds_dir_layout;
-extern struct ceph_file_layout g_default_mds_log_layout;
-extern struct ceph_file_layout g_default_mds_anchortable_layout;
 
 #include <vector>
 #include <map>
index a3bbf164d75c8077f883543ada5943ea12b73826..06c3f85ee312fca72ae0c0e1dea9fb510e9a46e3 100644 (file)
@@ -97,7 +97,13 @@ int main(int argc, const char **argv, const char *envp[])
   inode_t log_inode;
   memset(&log_inode, 0, sizeof(log_inode));
   log_inode.ino = MDS_INO_LOG_OFFSET + mds;
-  log_inode.layout = g_default_mds_log_layout;
+  log_inode.layout.fl_stripe_unit = 1<<20;
+  log_inode.layout.fl_stripe_count = 1;
+  log_inode.layout.fl_object_size = 1<<20;
+  log_inode.layout.fl_cas_hash = 0;
+  log_inode.layout.fl_object_stripe_unit = 0;
+  log_inode.layout.fl_pg_preferred = -1;
+  log_inode.layout.fl_pg_pool = CEPH_METADATA_RULE;
 
   objecter = new Objecter(messenger, &monmap, &osdmap, lock);
   journaler = new Journaler(log_inode.ino, &log_inode.layout, CEPH_FS_ONDISK_MAGIC, objecter, 0, 0,  &lock);
index 21afac93792c0a3e172ccdd82a47d3a04faf6328..87a091aa9f0a0ddaa98aaade7c62f8e8bd3b1d8c 100644 (file)
@@ -100,6 +100,17 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end)
                }
        }
 
+       /* pg_pools */
+       ceph_decode_32_safe(p, end, n, bad);
+       m->m_num_data_pg_pools = n;
+       m->m_data_pg_pools = kmalloc(sizeof(u32)*n, GFP_NOFS);
+       if (!m->m_data_pg_pools)
+               goto badmem;
+       ceph_decode_need(p, end, sizeof(u32)*(n+1), bad);
+       for (i = 0; i < n; i++)
+               ceph_decode_32(p, m->m_data_pg_pools[i]);
+       ceph_decode_32(p, m->m_cas_pg_pool);
+
        /* ok, we don't care about the rest. */
        dout(30, "mdsmap_decode success epoch %u\n", m->m_epoch);
        return m;
@@ -116,5 +127,6 @@ void ceph_mdsmap_destroy(struct ceph_mdsmap *m)
 {
        kfree(m->m_addr);
        kfree(m->m_state);
+       kfree(m->m_data_pg_pools);
        kfree(m);
 }
index 8defb0c4f4904b7c2d2b648d0ac9163413aa70c6..52389239f63b3dc3893ea0b6abbb0a16aa17bbf0 100644 (file)
@@ -16,6 +16,10 @@ struct ceph_mdsmap {
        u32 m_max_mds;                  /* size of m_addr, m_state arrays */
        struct ceph_entity_addr *m_addr;  /* mds addrs */
        s32 *m_state;                   /* states */
+
+       int m_num_data_pg_pools;
+       u32 *m_data_pg_pools;
+       u32 m_cas_pg_pool;
 };
 
 static inline struct ceph_entity_addr *
index 1dc873ce63e5e4b8727c1bbf7a56b7d1c020dbbd..a521af71e8c62aa116a9e1e11832058618d71590 100644 (file)
@@ -26,7 +26,6 @@
 void AnchorServer::init_inode()
 {
   ino = MDS_INO_ANCHORTABLE;
-  layout = g_default_file_layout;
 }
 
 void AnchorServer::reset_state()
index fd8517bfcff5f344f8cdd1346d2d0b5a42450687..a97db84dc858b328ab806671d19c9717d943a094 100644 (file)
@@ -1038,12 +1038,11 @@ void CDir::fetch(Context *c, bool ignore_authpinnability)
 
   // start by reading the first hunk of it
   C_Dir_Fetch *fin = new C_Dir_Fetch(this);
-  cache->mds->objecter->read( get_ondisk_object(),
-                             cache->mds->objecter->osdmap->file_to_object_layout( get_ondisk_object(),
-                                                                                  g_default_mds_dir_layout ),
-                             0, 0,   // whole object
-                             &fin->bl, 0,
-                             fin );
+  object_t oid = get_ondisk_object();
+  OSDMap *osdmap = cache->mds->objecter->osdmap;
+  ceph_object_layout ol = osdmap->make_object_layout(oid,
+                                                    cache->mds->mdsmap->get_metadata_pg_pool());
+  cache->mds->objecter->read_full(oid, ol, &fin->bl, 0, fin);
 }
 
 void CDir::_fetched(bufferlist &bl)
@@ -1478,11 +1477,14 @@ void CDir::_commit(version_t want)
   inode->make_path_string(path);
   m.setxattr("path", path);
 
-  cache->mds->objecter->mutate( get_ondisk_object(),
-                               cache->mds->objecter->osdmap->file_to_object_layout( get_ondisk_object(),
-                                                                                    g_default_mds_dir_layout ),
-                               m, snapc, 0,
-                               NULL, new C_Dir_Committed(this, get_version()) );
+  object_t oid = get_ondisk_object();
+  OSDMap *osdmap = cache->mds->objecter->osdmap;
+  ceph_object_layout ol = osdmap->make_object_layout(oid,
+                                                    cache->mds->mdsmap->get_metadata_pg_pool());
+
+  cache->mds->objecter->mutate(oid, ol,
+                              m, snapc, 0,
+                              NULL, new C_Dir_Committed(this, get_version()) );
 }
 
 
index 0794b2c7d1abf4a518957fe84d0faaec26b50ebe..65f9fd435e2f335e080dac9a955b2d10c150e166 100644 (file)
@@ -650,11 +650,13 @@ void CInode::store(Context *fin)
   m.setxattr("inode", bl);
 
   object_t oid(ino(), frag_t());
-  mdcache->mds->objecter->mutate( oid,
-                                 mdcache->mds->objecter->osdmap->file_to_object_layout( oid,
-                                                                                    g_default_mds_dir_layout ),
-                               m, snapc, 0,
-                               NULL, new C_Inode_Stored(this, get_version(), fin) );
+  OSDMap *osdmap = mdcache->mds->objecter->osdmap;
+  ceph_object_layout ol = osdmap->make_object_layout(oid,
+                                                    mdcache->mds->mdsmap->get_metadata_pg_pool());
+
+  mdcache->mds->objecter->mutate(oid, ol,
+                                m, snapc, 0,
+                                NULL, new C_Inode_Stored(this, get_version(), fin) );
 }
 
 void CInode::_stored(version_t v, Context *fin)
@@ -687,10 +689,12 @@ void CInode::fetch(Context *fin)
   ObjectRead rd;
   rd.getxattr("inode");
 
-  mdcache->mds->objecter->read( oid,
-             mdcache->mds->objecter->osdmap->file_to_object_layout( oid,
-                                                  g_default_mds_dir_layout ),
-                             rd, &c->bl, 0, c );
+  OSDMap *osdmap = mdcache->mds->objecter->osdmap;
+  ceph_object_layout ol = osdmap->make_object_layout(oid,
+                                                    mdcache->mds->mdsmap->get_metadata_pg_pool());
+
+  mdcache->mds->objecter->read(oid, ol,
+                              rd, &c->bl, 0, c );
 }
 
 void CInode::_fetched(bufferlist& bl, Context *fin)
index c576ffab772c2f9f926d183093228fc46acc1553..e1f38e74d88ed343f3a6d1b55aa148c8e4a25aac 100644 (file)
@@ -26,7 +26,6 @@
 void InoTable::init_inode()
 {
   ino = MDS_INO_IDS_OFFSET + mds->get_nodeid();
-  layout = g_default_file_layout;
 }
 
 void InoTable::reset_state()
index 9605733f3d1431d5596aa71e9f094629ab8d8190..7e8e7faa9339ecaaaf045800ecc5252b5d360d80 100644 (file)
@@ -204,6 +204,19 @@ void MDCache::remove_inode(CInode *o)
   delete o; 
 }
 
+
+
+void MDCache::init_layouts()
+{
+  default_file_layout = g_default_file_layout;
+  default_file_layout.fl_pg_preferred = -1;
+  default_file_layout.fl_pg_pool = mds->mdsmap->get_data_pg_pool();
+
+  default_dir_layout = g_default_file_layout;
+  default_dir_layout.fl_pg_preferred = -1;
+  default_dir_layout.fl_pg_pool = mds->mdsmap->get_metadata_pg_pool();
+}
+
 CInode *MDCache::create_system_inode(inodeno_t ino, int mode)
 {
   CInode *in = new CInode(this);
@@ -214,7 +227,10 @@ CInode *MDCache::create_system_inode(inodeno_t ino, int mode)
   in->inode.ctime = 
     in->inode.mtime = g_clock.now();
   in->inode.nlink = 1;
-  in->inode.layout = g_default_mds_dir_layout;
+  if (in->inode.is_dir())
+    in->inode.layout = default_dir_layout;
+  else
+    in->inode.layout = default_file_layout;
   add_inode(in);
   return in;
 }
index bd20c8c2ed06a18b9be186da1565daf50936489f..69ece7ed24687f6da175964800294be9a9f2982d 100644 (file)
@@ -417,6 +417,9 @@ public:
   int num_inodes_with_caps;
   int num_caps;
 
+  ceph_file_layout default_file_layout;
+  ceph_file_layout default_dir_layout;
+
   // -- client leases --
 public:
   static const int client_lease_pools = 3;
@@ -870,6 +873,7 @@ private:
   list<Context*> waiting_for_open;
 
 public:
+  void init_layouts();
   CInode *create_system_inode(inodeno_t ino, int mode);
   CInode *create_root_inode();
 
index acecf8bae3eeb06a00516cdffaf84f8b9bcdbeec..8edc0786d8048494f553b8c272263b3a621c4671 100644 (file)
@@ -83,7 +83,13 @@ void MDLog::init_journaler()
   // inode
   memset(&log_inode, 0, sizeof(log_inode));
   log_inode.ino = MDS_INO_LOG_OFFSET + mds->get_nodeid();
-  log_inode.layout = g_default_mds_log_layout;
+  log_inode.layout.fl_stripe_unit = 1<<20;
+  log_inode.layout.fl_stripe_count = 1;
+  log_inode.layout.fl_object_size = 1<<20;
+  log_inode.layout.fl_cas_hash = 0;
+  log_inode.layout.fl_object_stripe_unit = 0;
+  log_inode.layout.fl_pg_preferred = -1;
+  log_inode.layout.fl_pg_pool = mds->mdsmap->get_metadata_pg_pool();
   
   if (g_conf.mds_local_osd) 
     log_inode.layout.fl_pg_preferred = mds->get_nodeid() + g_conf.num_osd;  // hack
index a4f17038f12267f88ebff6c0536578db2f701daf..66356dd692f836fd339ce018b294a99084cd267d 100644 (file)
@@ -763,6 +763,8 @@ void MDS::boot_create()
 
   C_Gather *fin = new C_Gather(new C_MDS_CreateFinish(this));
 
+  mdcache->init_layouts();
+
   // start with a fresh journal
   dout(10) << "boot_create creating fresh journal" << dendl;
   mdlog->create(fin->new_sub());
@@ -822,6 +824,7 @@ void MDS::boot_start(int step, int r)
 
   switch (step) {
   case 0:
+    mdcache->init_layouts();
     step = 1;  // fall-thru.
 
   case 1:
index 26bdf6fd88b1a5dd6ce7f8252aeefd228b1db827..c7001c200c8c9092bb2eaa776ad6bf6565be4199 100644 (file)
@@ -52,7 +52,7 @@ using namespace std;
 
 
 class MDSMap {
- public:
+public:
   // mds states
   /*
   static const int STATE_DNE =        CEPH_MDS_STATE_DNE;  // down, never existed.
@@ -116,10 +116,9 @@ class MDSMap {
       ::decode(standby_for_name, bl);
     }
   };
-  WRITE_CLASS_ENCODER(mds_info_t)
 
 
- protected:
+protected:
   // base map
   epoch_t epoch;
   epoch_t client_epoch;  // incremented only when change is significant to client.
@@ -131,6 +130,10 @@ class MDSMap {
 
   __u32 session_timeout;
   __u32 session_autoclose;
+
+  vector<__u32> data_pg_pools;  // file data pg_pools available to clients (via an ioctl).  first is the default.
+  __u32 cas_pg_pool;            // where CAS objects go
+  __u32 metadata_pg_pool;       // where fs metadata objects go
   
   /*
    * in: the set of logical mds #'s that define the cluster.  this is the set
@@ -151,8 +154,9 @@ class MDSMap {
 
   friend class MDSMonitor;
 
- public:
-  MDSMap() : epoch(0), client_epoch(0), last_failure(0), tableserver(0), root(0) {
+public:
+  MDSMap() : epoch(0), client_epoch(0), last_failure(0), tableserver(0), root(0),
+            cas_pg_pool(0), metadata_pg_pool(0) {
     // hack.. this doesn't really belong here
     session_timeout = (int)g_conf.mds_session_timeout;
     session_autoclose = (int)g_conf.mds_session_autoclose;
@@ -178,6 +182,10 @@ class MDSMap {
   int get_tableserver() const { return tableserver; }
   int get_root() const { return root; }
 
+  const vector<__u32> &get_data_pg_pools() const { return data_pg_pools; }
+  __u32 get_data_pg_pool() const { return data_pg_pools[0]; }
+  __u32 get_cas_pg_pool() const { return cas_pg_pool; }
+  __u32 get_metadata_pg_pool() const { return metadata_pg_pool; }
 
   // counts
   unsigned get_num_mds() {
@@ -363,8 +371,11 @@ class MDSMap {
     ::encode(session_autoclose, bl);
     ::encode(max_mds, bl);
     ::encode(mds_info, bl);
+    ::encode(data_pg_pools, bl);
+    ::encode(cas_pg_pool, bl);
 
     // kclient ignores everything from here
+    ::encode(metadata_pg_pool, bl);
     ::encode(created, bl);
     ::encode(modified, bl);
     ::encode(tableserver, bl);
@@ -383,8 +394,11 @@ class MDSMap {
     ::decode(session_autoclose, p);
     ::decode(max_mds, p);
     ::decode(mds_info, p);
+    ::decode(data_pg_pools, p);
+    ::decode(cas_pg_pool, p);
 
     // kclient ignores everything from here
+    ::decode(metadata_pg_pool, p);
     ::decode(created, p);
     ::decode(modified, p);
     ::decode(tableserver, p);
index 8aa96876877258227ede892e2bfc62f8f496bd00..ff80fcb38f58c1ed7361e2b79d4d85476becab4f 100644 (file)
@@ -63,9 +63,11 @@ void MDSTable::save(Context *onfinish, version_t v)
   // write (async)
   SnapContext snapc;
   object_t oid(ino, 0);
-  mds->objecter->write_full(oid,
-                           mds->objecter->osdmap->file_to_object_layout(oid,
-                                                                        g_default_mds_dir_layout),
+  OSDMap *osdmap = mds->objecter->osdmap;
+  ceph_object_layout ol = osdmap->make_object_layout(oid,
+                                                    mds->mdsmap->get_metadata_pg_pool());
+
+  mds->objecter->write_full(oid, ol,
                            snapc,
                            bl, g_clock.now(), 0,
                            NULL, new C_MT_Save(this, version));
@@ -120,11 +122,10 @@ void MDSTable::load(Context *onfinish)
 
   C_MT_Load *c = new C_MT_Load(this, onfinish);
   object_t oid(ino, 0);
-  mds->objecter->read(oid,
-                     mds->objecter->osdmap->file_to_object_layout(oid,
-                                                                  g_default_mds_dir_layout),
-                     0, 0, // whole object
-                     &c->bl, 0, c);
+  OSDMap *osdmap = mds->objecter->osdmap;
+  ceph_object_layout ol = osdmap->make_object_layout(oid,
+                                                    mds->mdsmap->get_metadata_pg_pool());
+  mds->objecter->read_full(oid, ol, &c->bl, 0, c);
 }
 
 void MDSTable::load_2(int r, bufferlist& bl, Context *onfinish)
index 45709a5c07e503168c90bb9e8d3ac84c1f7e0e8e..9d92be02be16de0b643c3801e9cb6484b6b365fa 100644 (file)
@@ -28,7 +28,6 @@ class MDSTable {
 
   const char *table_name;
   inodeno_t ino;
-  ceph_file_layout layout;
   
   static const int STATE_UNDEF   = 0;
   static const int STATE_OPENING = 1;
index cf2b3a54debcb9510f0ac1f9da577b217810b728..23f06732f07e1b34884ffd6ee6f989cedcb38f8a 100644 (file)
@@ -1370,7 +1370,10 @@ CInode* Server::prepare_new_inode(MDRequest *mdr, CDir *dir, inodeno_t useino)
 
   in->inode.version = 1;
   in->inode.nlink = 1;   // FIXME
-  in->inode.layout = g_default_file_layout;
+  if (in->inode.is_dir())
+    in->inode.layout = mds->mdcache->default_dir_layout;
+  else
+    in->inode.layout = mds->mdcache->default_file_layout;
 
   in->inode.truncate_size = -1ull;  // not truncated, yet!
 
@@ -2602,7 +2605,6 @@ void Server::handle_client_mkdir(MDRequest *mdr)
   newi->inode.mode = req->head.args.mkdir.mode;
   newi->inode.mode &= ~S_IFMT;
   newi->inode.mode |= S_IFDIR;
-  newi->inode.layout = g_default_mds_dir_layout;
   newi->inode.version = dn->pre_dirty();
   newi->inode.rstat.rsubdirs = 1;
 
index 86721c02492add8c01be4edfc50321494e1b6839..13be59b354e19fc2ee5becc1f7c318634fdb303a 100644 (file)
@@ -13,6 +13,7 @@
  */
 
 #include "MDS.h"
+#include "MDCache.h"
 #include "SessionMap.h"
 #include "osdc/Filer.h"
 
 
 void SessionMap::init_inode()
 {
-  memset(&inode, 0, sizeof(inode));
-  inode.ino = MDS_INO_SESSIONMAP_OFFSET + mds->get_nodeid();
-  inode.layout = g_default_file_layout;
+  ino = MDS_INO_SESSIONMAP_OFFSET + mds->get_nodeid();
 }
 
-
 void SessionMap::dump()
 {
   hash<entity_name_t> H;
@@ -65,14 +63,11 @@ void SessionMap::load(Context *onload)
        waiting_for_load.push_back(onload);
   
   C_SM_Load *c = new C_SM_Load(this);
-  object_t oid(inode.ino, 0);
-  mds->objecter->read(oid,
-                     mds->objecter->osdmap->file_to_object_layout(oid,
-                                                                  g_default_mds_dir_layout),
-                     0, 0, // whole object
-                     &c->bl, 0,
-                     c);
-
+  object_t oid(ino, 0);
+  OSDMap *osdmap = mds->objecter->osdmap;
+  ceph_object_layout ol = osdmap->make_object_layout(oid,
+                                                    mds->mdsmap->get_metadata_pg_pool());
+  mds->objecter->read_full(oid, ol, &c->bl, 0, c);
 }
 
 void SessionMap::_load_finish(bufferlist &bl)
@@ -120,10 +115,12 @@ void SessionMap::save(Context *onsave, version_t needv)
   encode(bl);
   committing = version;
   SnapContext snapc;
-  object_t oid(inode.ino, 0);
-  mds->objecter->write_full(oid, 
-                           mds->objecter->osdmap->file_to_object_layout(oid,
-                                                                        g_default_mds_dir_layout),
+  object_t oid(ino, 0);
+  OSDMap *osdmap = mds->objecter->osdmap;
+  ceph_object_layout ol = osdmap->make_object_layout(oid,
+                                                    mds->mdsmap->get_metadata_pg_pool());
+
+  mds->objecter->write_full(oid, ol,
                            snapc,
                            bl, g_clock.now(), 0,
                            NULL, new C_SM_Save(this, version));
index bff1d290d79b44313b276e67cd2006104ea42850..ff7ebafc73e536f5f766becafc3f0986d3b12db2 100644 (file)
@@ -275,7 +275,7 @@ public:
   }
 
   // -- loading, saving --
-  inode_t inode;
+  inodeno_t ino;
   list<Context*> waiting_for_load;
 
   void encode(bufferlist& bl);
index e9ab10f9bc1cc1d3f97eea72f783411b09c0e374..a7782dbb08cbe6802a9026815782c023055f8345 100644 (file)
@@ -32,7 +32,6 @@
 void SnapServer::init_inode()
 {
   ino = MDS_INO_SNAPTABLE;
-  layout = g_default_file_layout;
 }
 
 void SnapServer::reset_state()
index 0964e359c80a91ca90a92a6d28bccc81c1dba7cc..4488180b92d62f8e9e55b74325125dbb96dee79f 100644 (file)
@@ -62,6 +62,9 @@ void MDSMonitor::create_initial(bufferlist& bl)
   dout(10) << "create_initial" << dendl;
   pending_mdsmap.max_mds = 1;
   pending_mdsmap.created = g_clock.now();
+  pending_mdsmap.data_pg_pools.push_back(CEPH_DATA_RULE);
+  pending_mdsmap.metadata_pg_pool = CEPH_METADATA_RULE;
+  pending_mdsmap.cas_pg_pool = CEPH_CASDATA_RULE;
   print_map(pending_mdsmap);
 }
 
index 29e9d9617cad44da5f6f028b4a07b974a7bcbb02..10d0fe2876b114d6416040e2d77212ffe2293cfc 100644 (file)
@@ -345,7 +345,11 @@ class Objecter {
     ops[0].length = len;
     return read(oid, ol, ops, pbl, 0, flags, onfinish);
   }
-
+  tid_t read_full(object_t oid, ceph_object_layout ol,
+                 bufferlist *pbl, int flags,
+                 Context *onfinish) {
+    return read(oid, ol, 0, 0, pbl, flags, onfinish);
+  }
      
   tid_t mutate(object_t oid, ceph_object_layout ol, 
               ObjectMutation& mutation,