summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Just <sam.just@inktank.com>2013-01-09 11:53:52 -0800
committerSage Weil <sage@inktank.com>2013-01-15 19:21:18 -0800
commitdde83262c1f74dee4ccc09b11b57254c2c3990fc (patch)
tree50ac1a6b66e6c69151f115c6a7d21f0f09f0ec5a
parentf969f6b39727a2135e39729d61960d8efda2be39 (diff)
downloadceph-dde83262c1f74dee4ccc09b11b57254c2c3990fc.tar.gz
osd_types: add nlink and snapcolls fields to ScrubMap::object
Signed-off-by: Samuel Just <sam.just@inktank.com>
-rw-r--r--src/osd/osd_types.cc14
-rw-r--r--src/osd/osd_types.h6
2 files changed, 17 insertions, 3 deletions
diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc
index 74975a91758..5b15afed065 100644
--- a/src/osd/osd_types.cc
+++ b/src/osd/osd_types.cc
@@ -2508,18 +2508,20 @@ void ScrubMap::generate_test_instances(list<ScrubMap*>& o)
void ScrubMap::object::encode(bufferlist& bl) const
{
- ENCODE_START(3, 2, bl);
+ ENCODE_START(4, 2, bl);
::encode(size, bl);
::encode(negative, bl);
::encode(attrs, bl);
::encode(digest, bl);
::encode(digest_present, bl);
+ ::encode(nlinks, bl);
+ ::encode(snapcolls, bl);
ENCODE_FINISH(bl);
}
void ScrubMap::object::decode(bufferlist::iterator& bl)
{
- DECODE_START_LEGACY_COMPAT_LEN(3, 2, 2, bl);
+ DECODE_START_LEGACY_COMPAT_LEN(4, 2, 2, bl);
::decode(size, bl);
::decode(negative, bl);
::decode(attrs, bl);
@@ -2531,6 +2533,14 @@ void ScrubMap::object::decode(bufferlist::iterator& bl)
digest = 0;
digest_present = false;
}
+ if (struct_v >= 4) {
+ ::decode(nlinks, bl);
+ ::decode(snapcolls, bl);
+ } else {
+ /* Indicates that encoder was not aware of this field since stat must
+ * return nlink >= 1 */
+ nlinks = 0;
+ }
DECODE_FINISH(bl);
}
diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h
index b2a41a175a7..dde2d7697d2 100644
--- a/src/osd/osd_types.h
+++ b/src/osd/osd_types.h
@@ -1751,8 +1751,12 @@ struct ScrubMap {
map<string,bufferptr> attrs;
__u32 digest;
bool digest_present;
+ uint32_t nlinks;
+ set<snapid_t> snapcolls;
- object(): size(0), negative(false), digest(0), digest_present(false) {}
+ object() :
+ size(0), negative(false), digest(0), digest_present(false),
+ nlinks(0) {}
void encode(bufferlist& bl) const;
void decode(bufferlist::iterator& bl);