From: Samuel Just Date: Wed, 9 Jan 2013 19:53:52 +0000 (-0800) Subject: osd_types: add nlink and snapcolls fields to ScrubMap::object X-Git-Tag: v0.57~188^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b85687475fa2ec74e5429d92ee64eda2051a256c;p=ceph.git osd_types: add nlink and snapcolls fields to ScrubMap::object Signed-off-by: Samuel Just --- diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index c534611a3619..b98613ccd434 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -2756,18 +2756,20 @@ void ScrubMap::generate_test_instances(list& 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); @@ -2779,6 +2781,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 9eeb49af89b4..89c40b246c43 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -1828,8 +1828,12 @@ struct ScrubMap { map attrs; __u32 digest; bool digest_present; + uint32_t nlinks; + set 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);