From: Joao Eduardo Luis Date: Mon, 11 Jun 2012 14:13:05 +0000 (+0100) Subject: mon: Monitor: keyring always on mon_data/keyring by default X-Git-Tag: v0.59~150^2~1^2~12 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c3d130cdf9d276ce33696347b5aa0ab346b802ee;p=ceph.git mon: Monitor: keyring always on mon_data/keyring by default Signed-off-by: Joao Eduardo Luis --- diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index b28b205375f0..cde3eb44d96d 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 a2395239db52..e98ef5f8695a 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