Skip to content

Commit

Permalink
Merge pull request ceph#9108 from tchaikov/wip-13990
Browse files Browse the repository at this point in the history
osd: reset session->osdmap if waiting_for_pg is empty

Reviewed-by: Samuel Just <sjust@redhat.com>
  • Loading branch information
athanatos committed May 19, 2016
2 parents d514a48 + 529260f commit 91e3fd6
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 4 deletions.
4 changes: 2 additions & 2 deletions src/msg/Message.h
Expand Up @@ -446,10 +446,10 @@ class Message : public RefCountedObject {
return get_source_inst();
}
entity_name_t get_orig_source() const {
return get_orig_source_inst().name;
return get_source();
}
entity_addr_t get_orig_source_addr() const {
return get_orig_source_inst().addr;
return get_source_addr();
}

// virtual bits
Expand Down
2 changes: 2 additions & 0 deletions src/osd/OSD.cc
Expand Up @@ -5887,6 +5887,7 @@ void OSD::dispatch_session_waiting(Session *session, OSDMapRef osdmap)
} else {
register_session_waiting_on_map(session);
}
session->maybe_reset_osdmap();
}


Expand Down Expand Up @@ -5965,6 +5966,7 @@ void OSD::session_notify_pg_cleared(
assert(session->session_dispatch_lock.is_locked());
update_waiting_for_pg(session, osdmap);
session->waiting_for_pg.erase(pgid);
session->maybe_reset_osdmap();
clear_session_waiting_on_pg(session, pgid);
}

Expand Down
10 changes: 8 additions & 2 deletions src/osd/OSD.h
Expand Up @@ -1342,9 +1342,14 @@ class OSD : public Dispatcher,
session_dispatch_lock("Session::session_dispatch_lock"),
last_sent_epoch(0), received_map_epoch(0)
{}


void maybe_reset_osdmap() {
if (waiting_for_pg.empty()) {
osdmap.reset();
}
}
};

private:
void update_waiting_for_pg(Session *session, OSDMapRef osdmap);
void session_notify_pg_create(Session *session, OSDMapRef osdmap, spg_t pgid);
void session_notify_pg_cleared(Session *session, OSDMapRef osdmap, spg_t pgid);
Expand Down Expand Up @@ -1442,6 +1447,7 @@ class OSD : public Dispatcher,
*/
session->waiting_on_map.clear();
session->waiting_for_pg.clear();
session->osdmap.reset();
}
void register_session_waiting_on_pg(Session *session, spg_t pgid) {
Mutex::Locker l(session_waiting_lock);
Expand Down
1 change: 1 addition & 0 deletions src/osd/OpRequest.cc
Expand Up @@ -82,6 +82,7 @@ void OpRequest::_unregistered() {
request->clear_data();
request->clear_payload();
request->release_message_throttle();
request->set_connection(nullptr);
}

bool OpRequest::check_rmw(int flag) {
Expand Down

0 comments on commit 91e3fd6

Please sign in to comment.