summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-06-04 13:08:07 -0700
committerSage Weil <sage@inktank.com>2013-06-04 13:08:07 -0700
commitbbdefe34875b99de8e11a50ffe925d5148634917 (patch)
treef9bd5ba81ae50380dbd909cf08e2d0abb7463e4f
parent38d3c3cb5337104eb3dd9c3c4bdad1d7006b3e25 (diff)
parent64b3e833f62f2538ffd7bd565d968decf6584691 (diff)
downloadceph-bbdefe34875b99de8e11a50ffe925d5148634917.tar.gz
Merge remote-tracking branch 'gh/next'
-rw-r--r--src/ceph_fuse.cc60
-rw-r--r--src/mds/MDCache.cc1
-rw-r--r--src/os/LevelDBStore.cc16
-rw-r--r--src/tools/ceph.cc1
-rwxr-xr-xsrc/vstart.sh2
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