#include <sys/mman.h>
#include <string.h>
+#include "seastar/core/sleep.hh"
+
#include "crimson/common/log.h"
#include "include/buffer.h"
Segment::close_ertr::future<> EphemeralSegment::close()
{
manager.segment_close(id);
- return close_ertr::now();
+ return close_ertr::now().safe_then([] {
+ return seastar::sleep(std::chrono::milliseconds(1));
+ });
}
Segment::write_ertr::future<> EphemeralSegment::write(
return crimson::ct_error::invarg::make();
segment_state[id] = segment_state_t::CLOSED;
- return Segment::close_ertr::now();
+ return Segment::close_ertr::now().safe_then([] {
+ return seastar::sleep(std::chrono::milliseconds(1));
+ });
}
Segment::write_ertr::future<> EphemeralSegmentManager::segment_write(
return crimson::ct_error::invarg::make();
bl.begin().copy(bl.length(), buffer + get_offset(addr));
- return Segment::write_ertr::now();
+ return Segment::write_ertr::now().safe_then([] {
+ return seastar::sleep(std::chrono::milliseconds(1));
+ });
}
EphemeralSegmentManager::init_ertr::future<> EphemeralSegmentManager::init()
buffer = (char*)addr;
::memset(buffer, 0, config.size);
- return init_ertr::now();
+ return init_ertr::now().safe_then([] {
+ return seastar::sleep(std::chrono::milliseconds(1));
+ });
}
EphemeralSegmentManager::~EphemeralSegmentManager()
::memset(buffer + get_offset({id, 0}), 0, config.segment_size);
segment_state[id] = segment_state_t::EMPTY;
- return release_ertr::now();
+ return release_ertr::now().safe_then([] {
+ return seastar::sleep(std::chrono::milliseconds(1));
+ });
}
SegmentManager::read_ertr::future<> EphemeralSegmentManager::read(
len,
bl.begin().crc32c(len, 1));
- return read_ertr::now();
+ return read_ertr::now().safe_then([] {
+ return seastar::sleep(std::chrono::milliseconds(1));
+ });
}
}