diff options
author | Sage Weil <sage@inktank.com> | 2013-06-04 13:08:07 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-06-04 13:08:07 -0700 |
commit | bbdefe34875b99de8e11a50ffe925d5148634917 (patch) | |
tree | f9bd5ba81ae50380dbd909cf08e2d0abb7463e4f | |
parent | 38d3c3cb5337104eb3dd9c3c4bdad1d7006b3e25 (diff) | |
parent | 64b3e833f62f2538ffd7bd565d968decf6584691 (diff) | |
download | ceph-bbdefe34875b99de8e11a50ffe925d5148634917.tar.gz |
Merge remote-tracking branch 'gh/next'
-rw-r--r-- | src/ceph_fuse.cc | 60 | ||||
-rw-r--r-- | src/mds/MDCache.cc | 1 | ||||
-rw-r--r-- | src/os/LevelDBStore.cc | 16 | ||||
-rw-r--r-- | src/tools/ceph.cc | 1 | ||||
-rwxr-xr-x | src/vstart.sh | 2 |
5 files changed, 44 insertions, 36 deletions
diff --git a/src/ceph_fuse.cc b/src/ceph_fuse.cc index f7a8d1a2c73..77c70f29df0 100644 --- a/src/ceph_fuse.cc +++ b/src/ceph_fuse.cc @@ -81,29 +81,6 @@ int main(int argc, const char **argv, const char *envp[]) { cerr << std::endl; } - // get monmap - MonClient mc(g_ceph_context); - int ret = mc.build_initial_monmap(); - if (ret == -EINVAL) - usage(); - - if (ret < 0) - return -1; - - // start up network - Messenger *messenger = Messenger::create(g_ceph_context, - entity_name_t::CLIENT(), "client", - getpid()); - Client *client = new Client(messenger, &mc); - - messenger->set_default_policy(Messenger::Policy::lossy_client(0, 0)); - messenger->set_policy(entity_name_t::TYPE_MDS, - Messenger::Policy::lossless_client(0, 0)); - - if (filer_flags) { - client->set_filer_flags(filer_flags); - } - // we need to handle the forking ourselves. int fd[2] = {0, 0}; // parent's, child's pid_t childpid = 0; @@ -130,10 +107,35 @@ int main(int argc, const char **argv, const char *envp[]) { if (restart_log) g_ceph_context->_log->start(); - CephFuse cfuse(client, fd[1]); + // get monmap + Messenger *messenger; + Client *client; + CephFuse *cfuse; + + MonClient mc(g_ceph_context); + int r = mc.build_initial_monmap(); + if (r == -EINVAL) + usage(); + if (r < 0) + goto out_mc_start_failed; + + // start up network + messenger = Messenger::create(g_ceph_context, + entity_name_t::CLIENT(), "client", + getpid()); + messenger->set_default_policy(Messenger::Policy::lossy_client(0, 0)); + messenger->set_policy(entity_name_t::TYPE_MDS, + Messenger::Policy::lossless_client(0, 0)); + + client = new Client(messenger, &mc); + if (filer_flags) { + client->set_filer_flags(filer_flags); + } + + cfuse = new CephFuse(client, fd[1]); cout << "ceph-fuse[" << getpid() << "]: starting ceph client" << std::endl; - int r = messenger->start(); + r = messenger->start(); if (r < 0) { cerr << "ceph-fuse[" << getpid() << "]: ceph mount failed with " << cpp_strerror(-r) << std::endl; goto out_messenger_start_failed; @@ -154,20 +156,21 @@ int main(int argc, const char **argv, const char *envp[]) { goto out_shutdown; } - r = cfuse.init(newargc, newargv); + r = cfuse->init(newargc, newargv); if (r != 0) { cerr << "ceph-fuse[" << getpid() << "]: fuse failed to initialize" << std::endl; goto out_client_unmount; } cerr << "ceph-fuse[" << getpid() << "]: starting fuse" << std::endl; - r = cfuse.loop(); + r = cfuse->loop(); cerr << "ceph-fuse[" << getpid() << "]: fuse finished with error " << r << std::endl; out_client_unmount: client->unmount(); //cout << "unmounted" << std::endl; - cfuse.finalize(); + cfuse->finalize(); + delete cfuse; out_shutdown: client->shutdown(); @@ -177,6 +180,7 @@ int main(int argc, const char **argv, const char *envp[]) { messenger->wait(); out_messenger_start_failed: delete client; + out_mc_start_failed: if (g_conf->daemonize) { //cout << "child signalling parent with " << r << std::endl; diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index 8c17172e5c4..b265f917a06 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -164,6 +164,7 @@ MDCache::MDCache(MDS *m) memset(&default_log_layout, 0, sizeof(default_log_layout)); did_shutdown_log_cap = false; + rejoins_pending = false; } MDCache::~MDCache() diff --git a/src/os/LevelDBStore.cc b/src/os/LevelDBStore.cc index 4e4e0e5c177..bd4dcdcb76f 100644 --- a/src/os/LevelDBStore.cc +++ b/src/os/LevelDBStore.cc @@ -90,7 +90,8 @@ void LevelDBStore::close() compact_queue_lock.Unlock(); } - cct->get_perfcounters_collection()->remove(logger); + if (logger) + cct->get_perfcounters_collection()->remove(logger); } int LevelDBStore::submit_transaction(KeyValueDB::Transaction t) @@ -229,26 +230,27 @@ void LevelDBStore::compact_range_async(const string& start, const string& end) // try to merge adjacent ranges. this is O(n), but the queue should // be short. note that we do not cover all overlap cases and merge // opportunities here, but we capture the ones we currently need. - list< pair<string,string> >::iterator p; - for (p = compact_queue.begin(); p != compact_queue.end(); ++p) { + list< pair<string,string> >::iterator p = compact_queue.begin(); + while (p != compact_queue.end()) { if (p->first == start && p->second == end) { // dup; no-op return; - } else if (p->first <= end && p->first > start) { + } + if (p->first <= end && p->first > start) { // merge with existing range to the right compact_queue.push_back(make_pair(start, p->second)); compact_queue.erase(p); logger->inc(l_leveldb_compact_queue_merge); break; - } else if (p->second >= start && p->second < end) { + } + if (p->second >= start && p->second < end) { // merge with existing range to the left compact_queue.push_back(make_pair(p->first, end)); compact_queue.erase(p); logger->inc(l_leveldb_compact_queue_merge); break; - } else { - ++p; } + ++p; } if (p == compact_queue.end()) { // no merge, new entry. diff --git a/src/tools/ceph.cc b/src/tools/ceph.cc index 1f02d833afd..23c3d5c546d 100644 --- a/src/tools/ceph.cc +++ b/src/tools/ceph.cc @@ -106,6 +106,7 @@ static void usage() cout << " ceph osd reweight <osd-id> <weight>\n"; cout << " ceph osd blacklist add <address>[:source_port] [time]\n"; cout << " ceph osd blacklist rm <address>[:source_port]\n"; + cout << " ceph osd blacklist ls\n"; cout << " ceph osd pool mksnap <pool> <snapname>\n"; cout << " ceph osd pool rmsnap <pool> <snapname>\n"; cout << " ceph osd pool create <pool> <pg_num> [<pgp_num>]\n"; diff --git a/src/vstart.sh b/src/vstart.sh index 9677fde1b96..0fd56e62678 100755 --- a/src/vstart.sh +++ b/src/vstart.sh @@ -306,7 +306,7 @@ fi [client] keyring = $keyring_fn - log file = out/\$name.log + log file = out/\$name.\$pid.log [mds] $DAEMONOPTS |