}
}
+ fh_key RGWFileHandle::make_fhk(const std::string& name)
+ {
+ if (depth <= 1) {
+ std::string tenanted_name =
+ get_fs()->get_user()->user_id.to_str() + ":" + name;
+ return fh_key(fhk.fh_hk.object, tenanted_name.c_str());
+ } else {
+ std::string key_name = make_key_name(name.c_str());
+ return fh_key(fhk.fh_hk.bucket, key_name.c_str());
+ }
+ }
+
void RGWFileHandle::encode_attrs(ceph::buffer::list& ux_key1,
ceph::buffer::list& ux_attrs1)
{
fh_key fhk;
auto bl_iter_key1 = ux_key1->cbegin();
decode(fhk, bl_iter_key1);
- if (fhk.version >= 2) {
- ceph_assert(this->fh.fh_hk == fhk.fh_hk);
- } else {
- get<0>(dar) = true;
- }
+ get<0>(dar) = true;
auto bl_iter_unix1 = ux_attrs1->cbegin();
decode(*this, bl_iter_unix1);
fh_hk.bucket = bk;
fh_hk.object = XXH64(_o, ::strlen(_o), seed);
}
-
- fh_key(const std::string& _b, const std::string& _o)
+
+ fh_key(const std::string& _b, const std::string& _o,
+ const std::string& _t /* tenant */)
: version(0) {
- fh_hk.bucket = XXH64(_b.c_str(), _o.length(), seed);
+ std::string tb = _t + ":" + _b;
+ fh_hk.bucket = XXH64(tb.c_str(), _o.length(), seed);
fh_hk.object = XXH64(_o.c_str(), _o.length(), seed);
}
return key_name;
}
- fh_key make_fhk(const std::string& name) const {
- if (depth <= 1)
- return fh_key(fhk.fh_hk.object, name.c_str());
- else {
- std::string key_name = make_key_name(name.c_str());
- return fh_key(fhk.fh_hk.bucket, key_name.c_str());
- }
- }
+ fh_key make_fhk(const std::string& name);
void add_marker(uint64_t off, const rgw_obj_key& marker,
uint8_t obj_type) {