last_tid = 0;
unsafe_sync_write = 0;
- mdsmap = 0;
-
cwd = NULL;
//
messenger = m;
// osd interfaces
- osdmap = new OSDMap(); // initially blank.. see mount()
+ osdmap = new OSDMap; // initially blank.. see mount()
+ mdsmap = new MDSMap;
objecter = new Objecter(messenger, monmap, osdmap, client_lock);
objecter->set_client_incarnation(0); // client always 0, for now.
objectcacher = new ObjectCacher(objecter, client_lock,
client_logger = new Logger(s, &client_logtype);
}
client_logger_lock.Unlock();
-
}
void Client::shutdown()
if (m->get_source().is_mds())
frommds = m->get_source().num();
- if (mdsmap == 0) {
- mdsmap = new MDSMap;
-
- assert(m->get_source().is_mon());
- whoami = m->get_dest().num();
- messenger->reset_myname(entity_name_t::CLIENT(whoami));
- dout(1) << "handle_mds_map i am now " << m->get_dest() << dendl;
-
- mount_cond.Signal(); // mount might be waiting for this.
- }
-
if (m->get_epoch() < mdsmap->get_epoch()) {
dout(1) << "handle_mds_map epoch " << m->get_epoch() << " is older than our "
<< mdsmap->get_epoch() << dendl;
mounters++;
while (signed_ticket.length() == 0 ||
- !mdsmap ||
- !osdmap ||
- osdmap->get_epoch() == 0 ||
(!itsme && !mounted)) // non-doers wait a little longer
mount_cond.Wait(client_lock);
{
dout(10) << "handle_mount_ack " << *m << dendl;
+ assert(m->get_source().is_mon());
+ whoami = m->get_dest().num();
+ messenger->reset_myname(entity_name_t::CLIENT(whoami));
+ dout(1) << "handle_mount_ack i am now " << m->get_dest() << dendl;
+
+ mount_cond.Signal(); // mount might be waiting for this.
+
signed_ticket = m->signed_ticket;
bufferlist::iterator p = signed_ticket.begin();
::decode(ticket, p);
dout(1) << "handle_unmount got ack" << dendl;
mounted = false;
-
- delete mdsmap;
- mdsmap = 0;
-
mount_cond.Signal();
delete m;
utime_t now = g_clock.now();
- if (mdsmap) {
+ if (mdsmap->get_epoch()) {
// renew caps?
utime_t el = now - last_cap_renew;
if (el > mdsmap->get_session_timeout() / 3.0)