using watch_key_t = std::pair<uint64_t, entity_name_t>;
std::map<watch_key_t, seastar::shared_ptr<crimson::osd::Watch>> watchers;
+ // attr cache. ECTransaction is the initial user
+ std::map<std::string, ceph::buffer::list, std::less<>> attr_cache;
+
CommonOBCPipeline obc_pipeline;
ObjectContext(hobject_t hoid) : lock(hoid.to_str()),
// See set_clone_ssc
obc->set_clone_state(std::move(md->os));
}
+ obc->attr_cache = std::move(md->attr_cache);
DEBUGDPP("loaded obc {} for {}", dpp, obc->obs.oi, obc->obs.oi.soid);
return seastar::now();
});
return crimson::ct_error::object_corrupted::make();
}
}
-
+ ret->attr_cache = std::move(attrs);
return load_metadata_ertr::make_ready_future<loaded_object_md_t::ref>(
std::move(ret));
}, crimson::ct_error::enoent::handle([oid] {
#include "messages/MOSDOpReply.h"
#include "os/Transaction.h"
#include "osd/osd_types.h"
+#include "crimson/os/futurized_store.h"
#include "crimson/osd/object_context.h"
#include "crimson/osd/osd_operation.h"
#include "crimson/osd/osd_operations/osdop_params.h"
struct loaded_object_md_t {
ObjectState os;
crimson::osd::SnapSetContextRef ssc;
+ crimson::os::FuturizedStore::Shard::attrs_t attr_cache;
using ref = std::unique_ptr<loaded_object_md_t>;
};
load_metadata_iertr::future<loaded_object_md_t::ref>