From c3d130cdf9d276ce33696347b5aa0ab346b802ee Mon Sep 17 00:00:00 2001 From: Joao Eduardo Luis Date: Mon, 11 Jun 2012 15:13:05 +0100 Subject: [PATCH] mon: Monitor: keyring always on mon_data/keyring by default Signed-off-by: Joao Eduardo Luis --- src/mon/Monitor.cc | 32 +++++++++++++++++++++++++++----- src/mon/Monitor.h | 1 + 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index b28b205375f0d..cde3eb44d96d4 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -409,9 +409,9 @@ int Monitor::preinit() extract_save_mon_key(keyring); } - ostringstream os; - os << g_conf->mon_data << "/keyring"; - int r = keyring.load(cct, os.str()); + string keyring_loc = g_conf->mon_data + "/keyring"; + + int r = keyring.load(cct, keyring_loc); if (r < 0) { EntityName mon_name; mon_name.set_type(CEPH_ENTITY_TYPE_MON); @@ -421,7 +421,7 @@ int Monitor::preinit() keyring.add(mon_name, mon_key); bufferlist bl; keyring.encode_plaintext(bl); - store->put_bl_ss(bl, "keyring", NULL); + write_default_keyring(bl); } else { derr << "unable to load initial keyring " << g_conf->keyring << dendl; lock.Unlock(); @@ -2839,6 +2839,28 @@ int Monitor::mkfs(bufferlist& osdmapbl) return 0; } +int Monitor::write_default_keyring(bufferlist& bl) +{ + ostringstream os; + os << g_conf->mon_data << "/keyring"; + + int err = 0; + int fd = ::open(os.str().c_str(), O_WRONLY|O_CREAT, 0644); + if (fd < 0) { + err = -errno; + dout(0) << __func__ << " failed to open " << os.str() + << ": " << cpp_strerror(err) << dendl; + return err; + } + + err = bl.write_fd(fd); + if (!err) + ::fsync(fd); + ::close(fd); + + return err; +} + void Monitor::extract_save_mon_key(KeyRing& keyring) { EntityName mon_name; @@ -2850,7 +2872,7 @@ void Monitor::extract_save_mon_key(KeyRing& keyring) pkey.add(mon_name, mon_key); bufferlist bl; pkey.encode_plaintext(bl); - store->put_bl_ss(bl, "keyring", NULL); + write_default_keyring(bl); keyring.remove(mon_name); } } diff --git a/src/mon/Monitor.h b/src/mon/Monitor.h index a2395239db52d..e98ef5f8695a9 100644 --- a/src/mon/Monitor.h +++ b/src/mon/Monitor.h @@ -483,6 +483,7 @@ public: bool ms_handle_reset(Connection *con); void ms_handle_remote_reset(Connection *con) {} + int write_default_keyring(bufferlist& bl); void extract_save_mon_key(KeyRing& keyring); // features -- 2.39.5