optmetadata.del_opt(optmetadata_singleton_server_t::kind_t::CHARMAP);
}
+ const std::vector<uint64_t>& get_referent_inodes() { return referent_inodes; }
+ void add_referent_ino(inodeno_t ref_ino) { referent_inodes.push_back(ref_ino); }
+ void remove_referent_ino(inodeno_t ref_ino) {
+ referent_inodes.erase(remove(referent_inodes.begin(), referent_inodes.end(), ref_ino), referent_inodes.end());
+ }
+
void encode(ceph::buffer::list &bl, uint64_t features) const;
void decode(ceph::buffer::list::const_iterator& bl);
void dump(ceph::Formatter *f) const;
optmetadata_multiton<optmetadata_singleton_server_t,Allocator> optmetadata;
inodeno_t remote_ino = 0; // referent inode - remote inode link
+ std::vector<uint64_t> referent_inodes;
private:
bool older_is_consistent(const inode_t &other) const;
encode(optmetadata, bl, features);
encode(remote_ino, bl);
+ encode(referent_inodes, bl);
+
ENCODE_FINISH(bl);
}
if (struct_v >= 21) {
decode(remote_ino, p);
+ decode(referent_inodes, p);
}
DECODE_FINISH(p);
}
f->dump_stream("last_scrub_stamp") << last_scrub_stamp;
f->dump_unsigned("last_scrub_version", last_scrub_version);
f->dump_unsigned("remote_ino", remote_ino);
+ f->open_array_section("referent_inodes");
+ for (const auto &ri : referent_inodes) {
+ f->dump_unsigned("referent_inode", ri);
+ }
+ f->close_section();
}
template<template<typename> class Allocator>
JSONDecoder::decode_json("last_scrub_stamp", last_scrub_stamp, obj, true);
JSONDecoder::decode_json("last_scrub_version", last_scrub_version, obj, true);
JSONDecoder::decode_json("remote_ino", remote_ino.val, obj, true);
+ JSONDecoder::decode_json("referent_inodes", referent_inodes, obj, true);
}
template<template<typename> class Allocator>
file_data_version != other.file_data_version ||
xattr_version != other.xattr_version ||
backtrace_version != other.backtrace_version ||
- remote_ino != other.remote_ino) {
+ remote_ino != other.remote_ino ||
+ referent_inodes != other.referent_inodes) {
*divergent = true;
}
return 0;