1
0
mirror of https://github.com/ceph/ceph synced 2025-04-11 04:02:04 +00:00

osd_types: add nlink and snapcolls fields to ScrubMap::object

Signed-off-by: Samuel Just <sam.just@inktank.com>
This commit is contained in:
Samuel Just 2013-01-09 11:53:52 -08:00
parent 39bc65492a
commit b85687475f
2 changed files with 17 additions and 3 deletions

View File

@ -2756,18 +2756,20 @@ void ScrubMap::generate_test_instances(list<ScrubMap*>& o)
void ScrubMap::object::encode(bufferlist& bl) const void ScrubMap::object::encode(bufferlist& bl) const
{ {
ENCODE_START(3, 2, bl); ENCODE_START(4, 2, bl);
::encode(size, bl); ::encode(size, bl);
::encode(negative, bl); ::encode(negative, bl);
::encode(attrs, bl); ::encode(attrs, bl);
::encode(digest, bl); ::encode(digest, bl);
::encode(digest_present, bl); ::encode(digest_present, bl);
::encode(nlinks, bl);
::encode(snapcolls, bl);
ENCODE_FINISH(bl); ENCODE_FINISH(bl);
} }
void ScrubMap::object::decode(bufferlist::iterator& 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(size, bl);
::decode(negative, bl); ::decode(negative, bl);
::decode(attrs, bl); ::decode(attrs, bl);
@ -2779,6 +2781,14 @@ void ScrubMap::object::decode(bufferlist::iterator& bl)
digest = 0; digest = 0;
digest_present = false; 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); DECODE_FINISH(bl);
} }

View File

@ -1828,8 +1828,12 @@ struct ScrubMap {
map<string,bufferptr> attrs; map<string,bufferptr> attrs;
__u32 digest; __u32 digest;
bool digest_present; 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 encode(bufferlist& bl) const;
void decode(bufferlist::iterator& bl); void decode(bufferlist::iterator& bl);