uint64_t expected_write_size) {
TestObjectOperationImpl *o = reinterpret_cast<TestObjectOperationImpl*>(impl);
o->ops.push_back(boost::bind(&TestIoCtxImpl::set_alloc_hint, _1, _2,
- expected_object_size, expected_write_size));
+ expected_object_size, expected_write_size, _4));
}
int TestIoCtxImpl::set_alloc_hint(const std::string& oid,
uint64_t expected_object_size,
- uint64_t expected_write_size) {
+ uint64_t expected_write_size,
+ const SnapContext &snapc) {
return 0;
}
std::vector<snap_t>& snaps);
virtual int set_alloc_hint(const std::string& oid,
uint64_t expected_object_size,
- uint64_t expected_write_size);
+ uint64_t expected_write_size,
+ const SnapContext &snapc);
virtual void set_snap_read(snap_t seq);
virtual int sparse_read(const std::string& oid, uint64_t off, uint64_t len,
std::map<uint64_t,uint64_t> *m,
return 0;
}
+int TestMemIoCtxImpl::set_alloc_hint(const std::string& oid,
+ uint64_t expected_object_size,
+ uint64_t expected_write_size,
+ const SnapContext &snapc) {
+ if (get_snap_read() != CEPH_NOSNAP) {
+ return -EROFS;
+ } else if (m_client->is_blacklisted()) {
+ return -EBLACKLISTED;
+ }
+
+ {
+ RWLock::WLocker l(m_pool->file_lock);
+ get_file(oid, true, snapc);
+ }
+
+ return 0;
+}
+
int TestMemIoCtxImpl::sparse_read(const std::string& oid, uint64_t off,
uint64_t len,
std::map<uint64_t,uint64_t> *m,
int selfmanaged_snap_remove(uint64_t snapid) override;
int selfmanaged_snap_rollback(const std::string& oid,
uint64_t snapid) override;
+ int set_alloc_hint(const std::string& oid, uint64_t expected_object_size,
+ uint64_t expected_write_size,
+ const SnapContext &snapc) override;
int sparse_read(const std::string& oid, uint64_t off, uint64_t len,
std::map<uint64_t,uint64_t> *m, bufferlist *data_bl) override;
int stat(const std::string& oid, uint64_t *psize, time_t *pmtime) override;