files: Construct file_impls properly

Constructors of classes inherited from file_impl copy alignment
values by hands, but miss the overwrite one, thus on a new file
it remains default-initialized.

To fix this and not to forget to properly initalize future fields
from file_impl, use the impl's copy constructor.

tests: unit(dev)

Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
Message-Id: <20210325104830.31923-1-xemul@scylladb.com>
This commit is contained in:
Pavel Emelyanov
2021-03-25 13:48:30 +03:00
committed by Tomasz Grabiec
parent ef06a939c4
commit c6a0e0439e
4 changed files with 5 additions and 16 deletions

View File

@@ -31,10 +31,7 @@ class checked_file_impl : public file_impl {
public:
checked_file_impl(const io_error_handler& error_handler, file f)
: _error_handler(error_handler), _file(f) {
_memory_dma_alignment = f.memory_dma_alignment();
_disk_read_dma_alignment = f.disk_read_dma_alignment();
_disk_write_dma_alignment = f.disk_write_dma_alignment();
: file_impl(*get_file_impl(f)), _error_handler(error_handler), _file(f) {
}
virtual future<size_t> write_dma(uint64_t pos, const void* buffer, size_t len, const io_priority_class& pc) override {

View File

@@ -574,11 +574,9 @@ class tracking_file_impl : public file_impl {
public:
tracking_file_impl(file file, reader_permit permit)
: _tracked_file(std::move(file))
: file_impl(*get_file_impl(file))
, _tracked_file(std::move(file))
, _permit(std::move(permit)) {
_memory_dma_alignment = _tracked_file.memory_dma_alignment();
_disk_read_dma_alignment = _tracked_file.disk_read_dma_alignment();
_disk_write_dma_alignment = _tracked_file.disk_write_dma_alignment();
}
tracking_file_impl(const tracking_file_impl&) = delete;

View File

@@ -27,10 +27,7 @@
namespace sstables {
integrity_checked_file_impl::integrity_checked_file_impl(sstring fname, file f)
: _fname(std::move(fname)), _file(f) {
_memory_dma_alignment = f.memory_dma_alignment();
_disk_read_dma_alignment = f.disk_read_dma_alignment();
_disk_write_dma_alignment = f.disk_write_dma_alignment();
: file_impl(*get_file_impl(f)), _fname(std::move(fname)), _file(f) {
}
static bytes data_sample(const int8_t* buf, size_t buf_len, size_t sample_off, size_t sample_len) {

View File

@@ -53,10 +53,7 @@ public:
};
traced_file_impl::traced_file_impl(file f, tracing::trace_state_ptr trace_state, sstring trace_prefix)
: _f(std::move(f)), _trace_state(std::move(trace_state)), _trace_prefix(std::move(trace_prefix)) {
_memory_dma_alignment = _f.memory_dma_alignment();
_disk_read_dma_alignment = _f.disk_read_dma_alignment();
_disk_write_dma_alignment = _f.disk_write_dma_alignment();
: file_impl(*get_file_impl(f)), _f(std::move(f)), _trace_state(std::move(trace_state)), _trace_prefix(std::move(trace_prefix)) {
}
future<size_t>