From 9ebbeb696cff85fbb21c560fcf9fc0023db08d46 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 27 Jan 2010 13:23:10 -0800 Subject: [PATCH] mds: add v to encoded mds structs mds: Begin auditing non-struct encodes mds: add versioning to the events and Anchor. mds fixes --- src/mds/Anchor.h | 4 ++++ src/mds/CInode.cc | 5 +++++ src/mds/CInode.h | 4 ++++ src/mds/Capability.h | 12 ++++++++++++ src/mds/MDSTableServer.h | 4 ++++ src/mds/SimpleLock.h | 4 ++++ src/mds/events/ECommitted.h | 4 ++++ src/mds/events/EExport.h | 4 ++++ src/mds/events/EFragment.h | 4 ++++ src/mds/events/EImportFinish.h | 4 ++++ src/mds/events/EImportStart.h | 4 ++++ src/mds/events/EMetaBlob.h | 20 ++++++++++++++++++++ src/mds/events/EOpen.h | 4 ++++ src/mds/events/ESession.h | 4 ++++ src/mds/events/ESlaveUpdate.h | 16 ++++++++++++++++ src/mds/events/ESubtreeMap.h | 4 ++++ src/mds/events/ETableClient.h | 4 ++++ src/mds/events/ETableServer.h | 4 ++++ src/mds/events/EUpdate.h | 4 ++++ src/mds/mdstypes.h | 28 ++++++++++++++++++++++++++++ src/mds/snap.h | 12 ++++++++++++ 21 files changed, 153 insertions(+) diff --git a/src/mds/Anchor.h b/src/mds/Anchor.h index ce7f95f3671b4..16d24140d2d97 100644 --- a/src/mds/Anchor.h +++ b/src/mds/Anchor.h @@ -46,6 +46,8 @@ public: nref(nr), updated(u) { } void encode(bufferlist &bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(ino, bl); ::encode(dirino, bl); ::encode(dn_hash, bl); @@ -53,6 +55,8 @@ public: ::encode(updated, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(ino, bl); ::decode(dirino, bl); ::decode(dn_hash, bl); diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index e641b2bed4263..e5e7d960220b8 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -1907,6 +1907,8 @@ void CInode::_decode_locks_rejoin(bufferlist::iterator& p, list& waite void CInode::encode_export(bufferlist& bl) { + __u8 struct_v = 1; + ::encode(struct_v, bl); _encode_base(bl); bool dirty = is_dirty(); @@ -1935,6 +1937,9 @@ void CInode::finish_export(utime_t now) void CInode::decode_import(bufferlist::iterator& p, LogSegment *ls) { + __u8 struct_v; + ::decode(struct_v, p); + _decode_base(p); bool dirty; diff --git a/src/mds/CInode.h b/src/mds/CInode.h index 17d45a463af9d..62970faf53744 100644 --- a/src/mds/CInode.h +++ b/src/mds/CInode.h @@ -408,6 +408,8 @@ private: void encode_parent_mutation(ObjectOperation& m); void encode_store(bufferlist& bl) { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(inode, bl); if (is_symlink()) ::encode(symlink, bl); @@ -419,6 +421,8 @@ private: ::encode(old_inodes, bl); } void decode_store(bufferlist::iterator& bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(inode, bl); if (is_symlink()) ::decode(symlink, bl); diff --git a/src/mds/Capability.h b/src/mds/Capability.h index 6da84db899d37..6afbe9863e6f9 100644 --- a/src/mds/Capability.h +++ b/src/mds/Capability.h @@ -79,6 +79,8 @@ public: Export(int w, int i, int p, snapid_t cf, ceph_seq_t s, utime_t lis) : wanted(w), issued(i), pending(p), client_follows(cf), mseq(s), last_issue_stamp(lis) {} void encode(bufferlist &bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(wanted, bl); ::encode(issued, bl); ::encode(pending, bl); @@ -87,6 +89,8 @@ public: ::encode(last_issue_stamp, bl); } void decode(bufferlist::iterator &p) { + __u8 struct_v; + ::decode(struct_v, p); ::decode(wanted, p); ::decode(issued, p); ::decode(pending, p); @@ -117,11 +121,15 @@ public: revoke_info() {} revoke_info(__u32 b, ceph_seq_t s, ceph_seq_t li) : before(b), seq(s), last_issue(li) {} void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(before, bl); ::encode(seq, bl); ::encode(last_issue, bl); } void decode(bufferlist::iterator& bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(before, bl); ::decode(seq, bl); ::decode(last_issue, bl); @@ -314,6 +322,8 @@ public: // serializers void encode(bufferlist &bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(last_sent, bl); ::encode(last_issue_stamp, bl); @@ -322,6 +332,8 @@ public: ::encode(_revokes, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(last_sent, bl); ::decode(last_issue_stamp, bl); diff --git a/src/mds/MDSTableServer.h b/src/mds/MDSTableServer.h index b45dde96f9b52..e913fb2f08f21 100644 --- a/src/mds/MDSTableServer.h +++ b/src/mds/MDSTableServer.h @@ -31,11 +31,15 @@ public: __s32 mds; version_t tid; void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(reqid, bl); ::encode(mds, bl); ::encode(tid, bl); } void decode(bufferlist::iterator& bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(reqid, bl); ::decode(mds, bl); ::decode(tid, bl); diff --git a/src/mds/SimpleLock.h b/src/mds/SimpleLock.h index 90eec6c29815c..482841945b063 100644 --- a/src/mds/SimpleLock.h +++ b/src/mds/SimpleLock.h @@ -387,10 +387,14 @@ public: // encode/decode void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(state, bl); ::encode(gather_set, bl); } void decode(bufferlist::iterator& p) { + __u8 struct_v; + ::decode(struct_v, p); ::decode(state, p); ::decode(gather_set, p); } diff --git a/src/mds/events/ECommitted.h b/src/mds/events/ECommitted.h index eb5a5aebc18dc..98dc20d55578b 100644 --- a/src/mds/events/ECommitted.h +++ b/src/mds/events/ECommitted.h @@ -31,9 +31,13 @@ public: } void encode(bufferlist &bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(reqid, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(reqid, bl); } diff --git a/src/mds/events/EExport.h b/src/mds/events/EExport.h index 0786382275cc6..6a1da49d8fd3a 100644 --- a/src/mds/events/EExport.h +++ b/src/mds/events/EExport.h @@ -42,11 +42,15 @@ public: } void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(metablob, bl); ::encode(base, bl); ::encode(bounds, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(metablob, bl); ::decode(base, bl); ::decode(bounds, bl); diff --git a/src/mds/events/EFragment.h b/src/mds/events/EFragment.h index e846b88a556d1..c0128c94a1a4b 100644 --- a/src/mds/events/EFragment.h +++ b/src/mds/events/EFragment.h @@ -34,12 +34,16 @@ public: } void encode(bufferlist &bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(ino, bl); ::encode(basefrag, bl); ::encode(bits, bl); ::encode(metablob, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(ino, bl); ::decode(basefrag, bl); ::decode(bits, bl); diff --git a/src/mds/events/EImportFinish.h b/src/mds/events/EImportFinish.h index 7455cc9113be9..c931a6a895edb 100644 --- a/src/mds/events/EImportFinish.h +++ b/src/mds/events/EImportFinish.h @@ -40,10 +40,14 @@ class EImportFinish : public LogEvent { } void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(base, bl); ::encode(success, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(base, bl); ::decode(success, bl); } diff --git a/src/mds/events/EImportStart.h b/src/mds/events/EImportStart.h index f652c6b0dae42..b7496f181344b 100644 --- a/src/mds/events/EImportStart.h +++ b/src/mds/events/EImportStart.h @@ -42,6 +42,8 @@ protected: } void encode(bufferlist &bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(base, bl); ::encode(metablob, bl); ::encode(bounds, bl); @@ -49,6 +51,8 @@ protected: ::encode(client_map, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(base, bl); ::decode(metablob, bl); ::decode(bounds, bl); diff --git a/src/mds/events/EMetaBlob.h b/src/mds/events/EMetaBlob.h index 5e2fc5c8e488d..7dbedab4f2aa1 100644 --- a/src/mds/events/EMetaBlob.h +++ b/src/mds/events/EMetaBlob.h @@ -87,6 +87,8 @@ public: fullbit() {} void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); assert(_enc.length()); bl.append(_enc); /* @@ -106,6 +108,8 @@ public: */ } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(dn, bl); ::decode(dnfirst, bl); ::decode(dnlast, bl); @@ -155,6 +159,8 @@ public: remotebit() {} void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); assert(_enc.length()); bl.append(_enc); /* @@ -168,6 +174,8 @@ public: */ } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(dn, bl); ::decode(dnfirst, bl); ::decode(dnlast, bl); @@ -208,6 +216,8 @@ public: nullbit() {} void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); assert(_enc.length()); bl.append(_enc); /* @@ -219,6 +229,8 @@ public: */ } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(dn, bl); ::decode(dnfirst, bl); ::decode(dnlast, bl); @@ -296,6 +308,8 @@ public: } void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(fnode, bl); ::encode(state, bl); ::encode(nfull, bl); @@ -305,6 +319,8 @@ public: ::encode(dnbl, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(fnode, bl); ::decode(state, bl); ::decode(nfull, bl); @@ -344,6 +360,8 @@ private: public: void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(lump_order, bl); ::encode(lump_map, bl); bufferlist rootbl; @@ -364,6 +382,8 @@ private: ::encode(client_reqs, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(lump_order, bl); ::decode(lump_map, bl); bufferlist rootbl; diff --git a/src/mds/events/EOpen.h b/src/mds/events/EOpen.h index d72572fda8e1a..2dde853366eb3 100644 --- a/src/mds/events/EOpen.h +++ b/src/mds/events/EOpen.h @@ -43,10 +43,14 @@ public: } void encode(bufferlist &bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(metablob, bl); ::encode(inos, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(metablob, bl); ::decode(inos, bl); } diff --git a/src/mds/events/ESession.h b/src/mds/events/ESession.h index 4248d46beaea7..002a246d58f2d 100644 --- a/src/mds/events/ESession.h +++ b/src/mds/events/ESession.h @@ -47,6 +47,8 @@ class ESession : public LogEvent { inos(i), inotablev(iv) { } void encode(bufferlist &bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(client_inst, bl); ::encode(open, bl); ::encode(cmapv, bl); @@ -54,6 +56,8 @@ class ESession : public LogEvent { ::encode(inotablev, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(client_inst, bl); ::decode(open, bl); ::decode(cmapv, bl); diff --git a/src/mds/events/ESlaveUpdate.h b/src/mds/events/ESlaveUpdate.h index 3c348ead0c05b..cdfd37330f3f7 100644 --- a/src/mds/events/ESlaveUpdate.h +++ b/src/mds/events/ESlaveUpdate.h @@ -32,6 +32,8 @@ struct link_rollback { utime_t old_dir_rctime; void encode(bufferlist &bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(reqid, bl); ::encode(ino, bl); ::encode(was_inc, bl); @@ -40,6 +42,8 @@ struct link_rollback { ::encode(old_dir_rctime, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(reqid, bl); ::decode(ino, bl); ::decode(was_inc, bl); @@ -61,6 +65,8 @@ struct rename_rollback { utime_t old_ctime; void encode(bufferlist &bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(dirfrag, bl); ::encode(dirfrag_old_mtime, bl); ::encode(dirfrag_old_rctime, bl); @@ -71,6 +77,8 @@ struct rename_rollback { ::encode(old_ctime, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(dirfrag, bl); ::decode(dirfrag_old_mtime, bl); ::decode(dirfrag_old_rctime, bl); @@ -89,6 +97,8 @@ struct rename_rollback { utime_t ctime; void encode(bufferlist &bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(reqid, bl); encode(orig_src, bl); encode(orig_dest, bl); @@ -96,6 +106,8 @@ struct rename_rollback { ::encode(ctime, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(reqid, bl); decode(orig_src, bl); decode(orig_dest, bl); @@ -149,6 +161,8 @@ public: } void encode(bufferlist &bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(type, bl); ::encode(reqid, bl); ::encode(master, bl); @@ -158,6 +172,8 @@ public: ::encode(rollback, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(type, bl); ::decode(reqid, bl); ::decode(master, bl); diff --git a/src/mds/events/ESubtreeMap.h b/src/mds/events/ESubtreeMap.h index aaedc859f304b..11254d7dc4c75 100644 --- a/src/mds/events/ESubtreeMap.h +++ b/src/mds/events/ESubtreeMap.h @@ -31,10 +31,14 @@ public: } void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(metablob, bl); ::encode(subtrees, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(metablob, bl); ::decode(subtrees, bl); } diff --git a/src/mds/events/ETableClient.h b/src/mds/events/ETableClient.h index 833af657a525e..3a220087142ff 100644 --- a/src/mds/events/ETableClient.h +++ b/src/mds/events/ETableClient.h @@ -32,11 +32,15 @@ struct ETableClient : public LogEvent { table(t), op(o), tid(ti) { } void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(table, bl); ::encode(op, bl); ::encode(tid, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(table, bl); ::decode(op, bl); ::decode(tid, bl); diff --git a/src/mds/events/ETableServer.h b/src/mds/events/ETableServer.h index 709ae4783a999..0f4998c75ec81 100644 --- a/src/mds/events/ETableServer.h +++ b/src/mds/events/ETableServer.h @@ -36,6 +36,8 @@ struct ETableServer : public LogEvent { table(t), op(o), reqid(ri), bymds(m), tid(ti), version(v) { } void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(table, bl); ::encode(op, bl); ::encode(reqid, bl); @@ -45,6 +47,8 @@ struct ETableServer : public LogEvent { ::encode(version, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(table, bl); ::decode(op, bl); ::decode(reqid, bl); diff --git a/src/mds/events/EUpdate.h b/src/mds/events/EUpdate.h index 74d0d9bf0b9cf..b92d210f1d884 100644 --- a/src/mds/events/EUpdate.h +++ b/src/mds/events/EUpdate.h @@ -38,6 +38,8 @@ public: } void encode(bufferlist &bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(type, bl); ::encode(metablob, bl); ::encode(client_map, bl); @@ -45,6 +47,8 @@ public: ::encode(had_slaves, bl); } void decode(bufferlist::iterator &bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(type, bl); ::decode(metablob, bl); ::decode(client_map, bl); diff --git a/src/mds/mdstypes.h b/src/mds/mdstypes.h index cf65e863f1cf7..735456399d400 100644 --- a/src/mds/mdstypes.h +++ b/src/mds/mdstypes.h @@ -478,11 +478,15 @@ struct old_inode_t { map xattrs; void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(first, bl); ::encode(inode, bl); ::encode(xattrs, bl); } void decode(bufferlist::iterator& bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(first, bl); ::decode(inode, bl); ::decode(xattrs, bl); @@ -529,11 +533,15 @@ struct old_rstat_t { nest_info_t rstat, accounted_rstat; void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(first, bl); ::encode(rstat, bl); ::encode(accounted_rstat, bl); } void decode(bufferlist::iterator& bl) { + __u8 struct_v; + ::decode(struct_v, bl); ::decode(first, bl); ::decode(rstat, bl); ::decode(accounted_rstat, bl); @@ -625,10 +633,14 @@ struct string_snap_t { string_snap_t(const nstring& n, snapid_t s) : name(n), snapid(s) {} string_snap_t(const char *n, snapid_t s) : name(n), snapid(s) {} void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(name, bl); ::encode(snapid, bl); } void decode(bufferlist::iterator& bl) { + __u8 struct_v = 1; + ::decode(struct_v, bl); ::decode(name, bl); ::decode(snapid, bl); } @@ -799,10 +811,14 @@ public: vec[i].reset(now); } void encode(bufferlist &bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); for (int i=0; i past_parents; // key is "last" (or NOSNAP) void encode(bufferlist& bl) const { + __u8 struct_v = 1; + ::encode(struct_v, bl); ::encode(seq, bl); ::encode(created, bl); ::encode(last_created, bl); @@ -104,6 +114,8 @@ struct SnapRealm { ::encode(past_parents, bl); } void decode(bufferlist::iterator& p) { + __u8 struct_v; + ::decode(struct_v, p); ::decode(seq, p); ::decode(created, p); ::decode(last_created, p); -- 2.39.5