In ancient times, the messenger could both initiate and accept connections. An artifact if that was data structures to store/process an incoming ceph_msg_connect request and send an outgoing ceph_msg_connect_reply. Sadly, the negotiation code was referencing those structures and ignoring important information (like the peer's connect_seq) from the correct ones. Among other things, this fixes tight reconnect loops where the server sends RETRY_SESSION and we (the client) retries with the same connect_seq as last time. This bug pretty easily triggered by injecting socket failures on the MDS and running some fs workload like workunits/direct_io/test_sync_io. Signed-off-by: Sage Weil <sage@inktank.com> |
||
|---|---|---|
| .. | ||
| auth.h | ||
| buffer.h | ||
| ceph_debug.h | ||
| ceph_frag.h | ||
| ceph_fs.h | ||
| ceph_hash.h | ||
| debugfs.h | ||
| decode.h | ||
| libceph.h | ||
| mdsmap.h | ||
| messenger.h | ||
| mon_client.h | ||
| msgpool.h | ||
| msgr.h | ||
| osd_client.h | ||
| osdmap.h | ||
| pagelist.h | ||
| rados.h | ||
| types.h | ||