Skip to content

Commit

Permalink
fixed osd message encoding
Browse files Browse the repository at this point in the history
  • Loading branch information
liewegas committed May 8, 2008
1 parent 657c28a commit b8f5dcb
Show file tree
Hide file tree
Showing 20 changed files with 294 additions and 239 deletions.
2 changes: 2 additions & 0 deletions src/include/types.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,9 @@ WRITE_RAW_ENCODER(ceph_mds_file_caps);
WRITE_RAW_ENCODER(ceph_mds_lease);
WRITE_RAW_ENCODER(ceph_mds_reply_head);
WRITE_RAW_ENCODER(ceph_mds_reply_inode);

WRITE_RAW_ENCODER(ceph_osd_request_head);
WRITE_RAW_ENCODER(ceph_osd_reply_head);

// ----------------------
// some basic types
Expand Down
10 changes: 5 additions & 5 deletions src/messages/MOSDBoot.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@ class MOSDBoot : public Message {
}

void encode_payload() {
::_encode(inst, payload);
::_encode(sb, payload);
::encode(inst, payload);
::encode(sb, payload);
}
void decode_payload() {
int off = 0;
::_decode(inst, payload, off);
::_decode(sb, payload, off);
bufferlist::iterator p = payload.begin();
::decode(inst, p);
::decode(sb, p);
}
};

Expand Down
18 changes: 9 additions & 9 deletions src/messages/MOSDFailure.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,17 @@ class MOSDFailure : public Message {
epoch_t get_epoch() { return epoch; }

void decode_payload() {
int off = 0;
::_decode(fsid, payload, off);
::_decode(from, payload, off);
::_decode(failed, payload, off);
::_decode(epoch, payload, off);
bufferlist::iterator p = payload.begin();
::decode(fsid, p);
::decode(from, p);
::decode(failed, p);
::decode(epoch, p);
}
void encode_payload() {
::_encode(fsid, payload);
::_encode(from, payload);
::_encode(failed, payload);
::_encode(epoch, payload);
::encode(fsid, payload);
::encode(from, payload);
::encode(failed, payload);
::encode(epoch, payload);
}

const char *get_type_name() { return "osd_failure"; }
Expand Down
10 changes: 5 additions & 5 deletions src/messages/MOSDGetMap.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@ class MOSDGetMap : public Message {
}

void encode_payload() {
::_encode(fsid, payload);
::_encode(start, payload);
::encode(fsid, payload);
::encode(start, payload);
}
void decode_payload() {
int off = 0;
::_decode(fsid, payload, off);
::_decode(start, payload, off);
bufferlist::iterator p = payload.begin();
::decode(fsid, p);
::decode(start, p);
}
};

Expand Down
14 changes: 7 additions & 7 deletions src/messages/MOSDMap.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,15 @@ class MOSDMap : public Message {

// marshalling
void decode_payload() {
int off = 0;
::_decode(fsid, payload, off);
::_decode(incremental_maps, payload, off);
::_decode(maps, payload, off);
bufferlist::iterator p = payload.begin();
::decode(fsid, p);
::decode(incremental_maps, p);
::decode(maps, p);
}
void encode_payload() {
::_encode(fsid, payload);
::_encode(incremental_maps, payload);
::_encode(maps, payload);
::encode(fsid, payload);
::encode(incremental_maps, payload);
::encode(maps, payload);
}

const char *get_type_name() { return "omap"; }
Expand Down
6 changes: 3 additions & 3 deletions src/messages/MOSDOp.h
Original file line number Diff line number Diff line change
Expand Up @@ -139,12 +139,12 @@ class MOSDOp : public Message {

// marshalling
virtual void decode_payload() {
int off = 0;
::_decode(head, payload, off);
bufferlist::iterator p = payload.begin();
::decode(head, p);
}

virtual void encode_payload() {
::_encode(head, payload);
::encode(head, payload);
env.data_off = get_offset();
}

Expand Down
6 changes: 3 additions & 3 deletions src/messages/MOSDOpReply.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,11 +76,11 @@ class MOSDOpReply : public Message {

// marshalling
virtual void decode_payload() {
int off = 0;
::_decode(head, payload, off);
bufferlist::iterator p = payload.begin();
::decode(head, p);
}
virtual void encode_payload() {
::_encode(head, payload);
::encode(head, payload);
env.data_off = get_offset();
}

Expand Down
25 changes: 20 additions & 5 deletions src/messages/MOSDPGCreate.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,20 @@ struct MOSDPGCreate : public Message {
epoch_t created; // epoch pg created
pg_t parent; // split from parent (if != pg_t())
int split_bits;

void encode(bufferlist &bl) const {
::encode(created, bl);
::encode(parent, bl);
::encode(split_bits, bl);
}
void decode(bufferlist::iterator &bl) {
::decode(created, bl);
::decode(parent, bl);
::decode(split_bits, bl);
}
};
WRITE_CLASS_ENCODERS(create_rec)

map<pg_t,create_rec> mkpg;

MOSDPGCreate() {}
Expand All @@ -39,14 +52,16 @@ struct MOSDPGCreate : public Message {
const char *get_type_name() { return "pg_create"; }

void encode_payload() {
::_encode(epoch, payload);
::_encode(mkpg, payload);
::encode(epoch, payload);
::encode(mkpg, payload);
}
void decode_payload() {
int off = 0;
::_decode(epoch, payload, off);
::_decode(mkpg, payload, off);
bufferlist::iterator p = payload.begin();
::decode(epoch, p);
::decode(mkpg, p);
}
};

WRITE_CLASS_ENCODERS(MOSDPGCreate::create_rec)

#endif
10 changes: 5 additions & 5 deletions src/messages/MOSDPGInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,13 @@ class MOSDPGInfo : public Message {
}

void encode_payload() {
::_encode(epoch, payload);
::_encode(pg_info, payload);
::encode(epoch, payload);
::encode(pg_info, payload);
}
void decode_payload() {
int off = 0;
::_decode(epoch, payload, off);
::_decode(pg_info, payload, off);
bufferlist::iterator p = payload.begin();
::decode(epoch, p);
::decode(pg_info, p);
}
};

Expand Down
11 changes: 5 additions & 6 deletions src/messages/MOSDPGNotify.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,13 @@ class MOSDPGNotify : public Message {
const char *get_type_name() { return "PGnot"; }

void encode_payload() {
payload.append((char*)&epoch, sizeof(epoch));
_encode(pg_list, payload);
::encode(epoch, payload);
::encode(pg_list, payload);
}
void decode_payload() {
int off = 0;
payload.copy(off, sizeof(epoch), (char*)&epoch);
off += sizeof(epoch);
_decode(pg_list, payload, off);
bufferlist::iterator p = payload.begin();
::decode(epoch, p);
::decode(pg_list, p);
}
};

Expand Down
16 changes: 7 additions & 9 deletions src/messages/MOSDPGPeer.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,17 +41,15 @@ class MOSDPGPeer : public Message {
char *get_type_name() { return "PGPeer"; }

void encode_payload() {
payload.append((char*)&map_version, sizeof(map_version));
payload.append((char*)&complete, sizeof(complete));
_encode(pg_list, payload);
::encode(map_version, payload);
::encode(complete, payload);
::encode(pg_list, payload);
}
void decode_payload() {
int off = 0;
payload.copy(off, sizeof(map_version), (char*)&map_version);
off += sizeof(map_version);
payload.copy(off, sizeof(complete), (char*)&complete);
off += sizeof(complete);
_decode(pg_list, payload, off);
bufferlist::iterator p = payload.begin();
::decode(map_version, p);
::decode(complete, p);
::decode(pg_list, p);
}
};

Expand Down
32 changes: 7 additions & 25 deletions src/messages/MOSDPGPeerAck.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,33 +37,15 @@ class MOSDPGPeerAck : public Message {
char *get_type_name() { return "PGPeer"; }

void encode_payload() {
payload.append((char*)&map_version, sizeof(map_version));
_encode(pg_dne, payload);

int n = pg_state.size();
payload.append((char*)&n, sizeof(n));
for (map<pg_t, PGReplicaInfo >::iterator it = pg_state.begin();
it != pg_state.end();
it++) {
payload.append((char*)&it->first, sizeof(it->first));
it->second._encode(payload);
}
::encode(map_version, payload);
::encode(pg_dne, payload);
::encode(pg_state, payload);
}
void decode_payload() {
int off = 0;
payload.copy(off, sizeof(map_version), (char*)&map_version);
off += sizeof(map_version);
_decode(pg_dne, payload, off);

int n;
payload.copy(off, sizeof(n), (char*)&n);
off += sizeof(n);
for (int i=0; i<n; i++) {
pg_t pgid;
payload.copy(off, sizeof(pgid), (char*)&pgid);
off += sizeof(pgid);
pg_state[pgid]._decode(payload, off);
}
bufferlist::iterator p = payload.begin();
::decode(map_version, payload);
::decode(pg_dne, payload);
::decode(pg_state, payload);
}
};

Expand Down
11 changes: 5 additions & 6 deletions src/messages/MOSDPGPeerRequest.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,13 @@ class MOSDPGPeerRequest : public Message {
char *get_type_name() { return "PGPR"; }

void encode_payload() {
payload.append((char*)&map_version, sizeof(map_version));
_encode(pg_list, payload);
::encode(map_version, payload);
::encode(pg_list, payload);
}
void decode_payload() {
int off = 0;
payload.copy(off, sizeof(map_version), (char*)&map_version);
off += sizeof(map_version);
_decode(pg_list, payload, off);
bufferlist::iterator p = payload.begin();
::decode(map_version, p);
::decode(pg_list, p);
}
};

Expand Down
10 changes: 5 additions & 5 deletions src/messages/MOSDPGQuery.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@ class MOSDPGQuery : public Message {
const char *get_type_name() { return "PGq"; }

void encode_payload() {
::_encode(epoch, payload);
::_encode(pg_list, payload);
::encode(epoch, payload);
::encode(pg_list, payload);
}
void decode_payload() {
int off = 0;
::_decode(epoch, payload, off);
::_decode(pg_list, payload, off);
bufferlist::iterator p = payload.begin();
::decode(epoch, p);
::decode(pg_list, p);
}
};

Expand Down
11 changes: 5 additions & 6 deletions src/messages/MOSDPGRemove.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,13 @@ class MOSDPGRemove : public Message {
const char *get_type_name() { return "PGrm"; }

void encode_payload() {
payload.append((char*)&epoch, sizeof(epoch));
_encode(pg_list, payload);
::encode(epoch, payload);
::encode(pg_list, payload);
}
void decode_payload() {
int off = 0;
payload.copy(off, sizeof(epoch), (char*)&epoch);
off += sizeof(epoch);
_decode(pg_list, payload, off);
bufferlist::iterator p = payload.begin();
::decode(epoch, p);
::decode(pg_list, p);
}

};
Expand Down
2 changes: 1 addition & 1 deletion src/messages/MOSDPGSummary.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class MOSDPGSummary : public Message {
Message(MSG_OSD_PG_SUMMARY) {
this->epoch = mv;
this->pgid = pgid;
summary._encode(sumbl);
summary.encode(sumbl);
}

pg_t get_pgid() { return pgid; }
Expand Down
14 changes: 7 additions & 7 deletions src/messages/MOSDPing.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,15 @@ class MOSDPing : public Message {
MOSDPing() {}

void decode_payload() {
int off = 0;
::_decode(map_epoch, payload, off);
::_decode(ack, payload, off);
::_decode(peer_stat, payload, off);
bufferlist::iterator p = payload.begin();
::decode(map_epoch, p);
::decode(ack, p);
::decode(peer_stat, p);
}
void encode_payload() {
::_encode(map_epoch, payload);
::_encode(ack, payload);
::_encode(peer_stat, payload);
::encode(map_epoch, payload);
::encode(ack, payload);
::encode(peer_stat, payload);
}

const char *get_type_name() { return "osd_ping"; }
Expand Down
Loading

0 comments on commit b8f5dcb

Please sign in to comment.