From b57cbebbe53d787e319acbf3ce71050e4ddd58e2 Mon Sep 17 00:00:00 2001 From: Zhichao Cao Date: Mon, 21 Sep 2020 16:05:39 -0700 Subject: [PATCH 1/3] Add AppendWithVerify and PositionedAppendWithVerify to Env and FileSystem --- env/composite_env_wrapper.h | 28 ++++++++++++++++++++++++++++ include/rocksdb/env.h | 32 ++++++++++++++++++++++++++++++++ include/rocksdb/file_system.h | 28 ++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) diff --git a/env/composite_env_wrapper.h b/env/composite_env_wrapper.h index f12657a04b2..013b6cb4da6 100644 --- a/env/composite_env_wrapper.h +++ b/env/composite_env_wrapper.h @@ -115,11 +115,26 @@ class CompositeWritableFileWrapper : public WritableFile { IODebugContext dbg; return target_->Append(data, io_opts, &dbg); } + Status AppendWithVerify( + const Slice& data, + const DataVerificationInfo& verification_info) override { + IOOptions io_opts; + IODebugContext dbg; + return target_->AppendWithVerify(data, io_opts, &dbg, verification_info); + } Status PositionedAppend(const Slice& data, uint64_t offset) override { IOOptions io_opts; IODebugContext dbg; return target_->PositionedAppend(data, offset, io_opts, &dbg); } + Status PositionedAppendWithVerify( + const Slice& data, uint64_t offset, + const DataVerificationInfo& verification_info) override { + IOOptions io_opts; + IODebugContext dbg; + return target_->PositionedAppendWithVerify(data, offset, io_opts, &dbg, + verification_info); + } Status Truncate(uint64_t size) override { IOOptions io_opts; IODebugContext dbg; @@ -727,11 +742,24 @@ class LegacyWritableFileWrapper : public FSWritableFile { IODebugContext* /*dbg*/) override { return status_to_io_status(target_->Append(data)); } + IOStatus AppendWithVerify( + const Slice& data, const IOOptions& /*options*/, IODebugContext* /*dbg*/, + const DataVerificationInfo& verification_info) override { + return status_to_io_status( + target_->AppendWithVerify(data, verification_info)); + } IOStatus PositionedAppend(const Slice& data, uint64_t offset, const IOOptions& /*options*/, IODebugContext* /*dbg*/) override { return status_to_io_status(target_->PositionedAppend(data, offset)); } + IOStatus PositionedAppendWithVerify( + const Slice& data, uint64_t offset, const IOOptions& /*options*/, + IODebugContext* /*dbg*/, + const DataVerificationInfo& verification_info) override { + return status_to_io_status( + target_->PositionedAppendWithVerify(data, offset, verification_info)); + } IOStatus Truncate(uint64_t size, const IOOptions& /*options*/, IODebugContext* /*dbg*/) override { return status_to_io_status(target_->Truncate(size)); diff --git a/include/rocksdb/env.h b/include/rocksdb/env.h index 955d591c310..78fe7fc860c 100644 --- a/include/rocksdb/env.h +++ b/include/rocksdb/env.h @@ -740,6 +740,14 @@ class RandomAccessFile { // RandomAccessFileWrapper too. }; +// A data structure brings the data verification information, which is +// used togther with data being written to a file. +struct DataVerificationInfo { + DataVerificationInfo(const std::string& checksum_) : checksum(checksum_) {} + // checksum of the data being written. + Slice checksum; +}; + // A file abstraction for sequential writing. The implementation // must provide buffering since callers may append small fragments // at a time to the file. @@ -769,6 +777,12 @@ class WritableFile { // PositionedAppend, so the users cannot mix the two. virtual Status Append(const Slice& data) = 0; + // Append data with verification information + virtual Status AppendWithVerify( + const Slice& data, const DataVerificationInfo& /* verification_info */) { + return Append(data); + } + // PositionedAppend data to the specified offset. The new EOF after append // must be larger than the previous EOF. This is to be used when writes are // not backed by OS buffers and hence has to always start from the start of @@ -795,6 +809,14 @@ class WritableFile { "WritableFile::PositionedAppend() not supported."); } + // PositionedAppend data with verification information. + virtual Status PositionedAppendWithVerify( + const Slice& /* data */, uint64_t /* offset */, + const DataVerificationInfo& /* verification_info */) { + return Status::NotSupported( + "WritableFile::PositionedAppend() not supported."); + } + // Truncate is necessary to trim the file to the correct size // before closing. It is not always possible to keep track of the file // size due to whole pages writes. The behavior is undefined if called @@ -1497,9 +1519,19 @@ class WritableFileWrapper : public WritableFile { explicit WritableFileWrapper(WritableFile* t) : target_(t) {} Status Append(const Slice& data) override { return target_->Append(data); } + Status AppendWithVerify( + const Slice& data, + const DataVerificationInfo& verification_info) override { + return target_->AppendWithVerify(data, verification_info); + } Status PositionedAppend(const Slice& data, uint64_t offset) override { return target_->PositionedAppend(data, offset); } + Status PositionedAppendWithVerify( + const Slice& data, uint64_t offset, + const DataVerificationInfo& verification_info) override { + return target_->PositionedAppendWithVerify(data, offset, verification_info); + } Status Truncate(uint64_t size) override { return target_->Truncate(size); } Status Close() override { return target_->Close(); } Status Flush() override { return target_->Flush(); } diff --git a/include/rocksdb/file_system.h b/include/rocksdb/file_system.h index 76009c2bb21..76ffd3f3159 100644 --- a/include/rocksdb/file_system.h +++ b/include/rocksdb/file_system.h @@ -749,6 +749,14 @@ class FSWritableFile { // // PositionedAppend() requires aligned buffer to be passed in. The alignment // required is queried via GetRequiredBufferAlignment() + + // Append data with verification information + virtual IOStatus AppendWithVerify( + const Slice& data, const IOOptions& options, IODebugContext* dbg, + const DataVerificationInfo& /* verification_info */) { + return Append(data, options, dbg); + } + virtual IOStatus PositionedAppend(const Slice& /* data */, uint64_t /* offset */, const IOOptions& /*options*/, @@ -756,6 +764,14 @@ class FSWritableFile { return IOStatus::NotSupported(); } + // PositionedAppend data with verification information. + virtual IOStatus PositionedAppendWithVerify( + const Slice& /* data */, uint64_t /* offset */, + const IOOptions& /*options*/, IODebugContext* /*dbg*/, + const DataVerificationInfo& /* verification_info */) { + return IOStatus::NotSupported(); + } + // Truncate is necessary to trim the file to the correct size // before closing. It is not always possible to keep track of the file // size due to whole pages writes. The behavior is undefined if called @@ -1286,11 +1302,23 @@ class FSWritableFileWrapper : public FSWritableFile { IODebugContext* dbg) override { return target_->Append(data, options, dbg); } + IOStatus AppendWithVerify( + const Slice& data, const IOOptions& options, IODebugContext* dbg, + const DataVerificationInfo& verification_info) override { + return target_->AppendWithVerify(data, options, dbg, verification_info); + } IOStatus PositionedAppend(const Slice& data, uint64_t offset, const IOOptions& options, IODebugContext* dbg) override { return target_->PositionedAppend(data, offset, options, dbg); } + IOStatus PositionedAppendWithVerify( + const Slice& data, uint64_t offset, const IOOptions& options, + IODebugContext* dbg, + const DataVerificationInfo& verification_info) override { + return target_->PositionedAppendWithVerify(data, offset, options, dbg, + verification_info); + } IOStatus Truncate(uint64_t size, const IOOptions& options, IODebugContext* dbg) override { return target_->Truncate(size, options, dbg); From c8004745bdfe21f140982356388900e3416f5190 Mon Sep 17 00:00:00 2001 From: Zhichao Cao Date: Mon, 21 Sep 2020 18:25:17 -0700 Subject: [PATCH 2/3] Address the comments --- env/composite_env_wrapper.h | 31 +++++++------------------------ env/file_system_tracer.h | 11 +++++++++++ env/io_posix.h | 16 ++++++++++++++++ include/rocksdb/env.h | 32 -------------------------------- include/rocksdb/file_system.h | 33 ++++++++++++++++++++++----------- utilities/fault_injection_fs.h | 11 +++++++++++ 6 files changed, 67 insertions(+), 67 deletions(-) diff --git a/env/composite_env_wrapper.h b/env/composite_env_wrapper.h index 013b6cb4da6..2745f3fd2ff 100644 --- a/env/composite_env_wrapper.h +++ b/env/composite_env_wrapper.h @@ -115,26 +115,11 @@ class CompositeWritableFileWrapper : public WritableFile { IODebugContext dbg; return target_->Append(data, io_opts, &dbg); } - Status AppendWithVerify( - const Slice& data, - const DataVerificationInfo& verification_info) override { - IOOptions io_opts; - IODebugContext dbg; - return target_->AppendWithVerify(data, io_opts, &dbg, verification_info); - } Status PositionedAppend(const Slice& data, uint64_t offset) override { IOOptions io_opts; IODebugContext dbg; return target_->PositionedAppend(data, offset, io_opts, &dbg); } - Status PositionedAppendWithVerify( - const Slice& data, uint64_t offset, - const DataVerificationInfo& verification_info) override { - IOOptions io_opts; - IODebugContext dbg; - return target_->PositionedAppendWithVerify(data, offset, io_opts, &dbg, - verification_info); - } Status Truncate(uint64_t size) override { IOOptions io_opts; IODebugContext dbg; @@ -742,23 +727,21 @@ class LegacyWritableFileWrapper : public FSWritableFile { IODebugContext* /*dbg*/) override { return status_to_io_status(target_->Append(data)); } - IOStatus AppendWithVerify( - const Slice& data, const IOOptions& /*options*/, IODebugContext* /*dbg*/, - const DataVerificationInfo& verification_info) override { - return status_to_io_status( - target_->AppendWithVerify(data, verification_info)); + IOStatus Append(const Slice& data, const IOOptions& /*options*/, + IODebugContext* /*dbg*/, + const DataVerificationInfo& /*verification_info*/) override { + return status_to_io_status(target_->Append(data)); } IOStatus PositionedAppend(const Slice& data, uint64_t offset, const IOOptions& /*options*/, IODebugContext* /*dbg*/) override { return status_to_io_status(target_->PositionedAppend(data, offset)); } - IOStatus PositionedAppendWithVerify( + IOStatus PositionedAppend( const Slice& data, uint64_t offset, const IOOptions& /*options*/, IODebugContext* /*dbg*/, - const DataVerificationInfo& verification_info) override { - return status_to_io_status( - target_->PositionedAppendWithVerify(data, offset, verification_info)); + const DataVerificationInfo& /*verification_info*/) override { + return status_to_io_status(target_->PositionedAppend(data, offset)); } IOStatus Truncate(uint64_t size, const IOOptions& /*options*/, IODebugContext* /*dbg*/) override { diff --git a/env/file_system_tracer.h b/env/file_system_tracer.h index f18d4a1ff92..56fd0451a87 100644 --- a/env/file_system_tracer.h +++ b/env/file_system_tracer.h @@ -244,10 +244,21 @@ class FSWritableFileTracingWrapper : public FSWritableFileWrapper { IOStatus Append(const Slice& data, const IOOptions& options, IODebugContext* dbg) override; + IOStatus Append(const Slice& data, const IOOptions& options, + IODebugContext* dbg, + const DataVerificationInfo& /*verification_info*/) override { + return Append(data, options, dbg); + } IOStatus PositionedAppend(const Slice& data, uint64_t offset, const IOOptions& options, IODebugContext* dbg) override; + IOStatus PositionedAppend( + const Slice& data, uint64_t offset, const IOOptions& options, + IODebugContext* dbg, + const DataVerificationInfo& /*verification_info*/) override { + return PositionedAppend(data, offset, options, dbg); + } IOStatus Truncate(uint64_t size, const IOOptions& options, IODebugContext* dbg) override; diff --git a/env/io_posix.h b/env/io_posix.h index 61d3cda9dd8..e09df25d1fc 100644 --- a/env/io_posix.h +++ b/env/io_posix.h @@ -242,9 +242,20 @@ class PosixWritableFile : public FSWritableFile { virtual IOStatus Close(const IOOptions& opts, IODebugContext* dbg) override; virtual IOStatus Append(const Slice& data, const IOOptions& opts, IODebugContext* dbg) override; + virtual IOStatus Append( + const Slice& data, const IOOptions& opts, IODebugContext* dbg, + const DataVerificationInfo& /* verification_info */) override { + return Append(data, opts, dbg); + } virtual IOStatus PositionedAppend(const Slice& data, uint64_t offset, const IOOptions& opts, IODebugContext* dbg) override; + virtual IOStatus PositionedAppend( + const Slice& data, uint64_t offset, const IOOptions& opts, + IODebugContext* dbg, + const DataVerificationInfo& /* verification_info */) override { + return PositionedAppend(data, offset, opts, dbg); + } virtual IOStatus Flush(const IOOptions& opts, IODebugContext* dbg) override; virtual IOStatus Sync(const IOOptions& opts, IODebugContext* dbg) override; virtual IOStatus Fsync(const IOOptions& opts, IODebugContext* dbg) override; @@ -331,6 +342,11 @@ class PosixMmapFile : public FSWritableFile { virtual IOStatus Close(const IOOptions& opts, IODebugContext* dbg) override; virtual IOStatus Append(const Slice& data, const IOOptions& opts, IODebugContext* dbg) override; + virtual IOStatus Append( + const Slice& data, const IOOptions& opts, IODebugContext* dbg, + const DataVerificationInfo& /* verification_info */) override { + return Append(data, opts, dbg); + } virtual IOStatus Flush(const IOOptions& opts, IODebugContext* dbg) override; virtual IOStatus Sync(const IOOptions& opts, IODebugContext* dbg) override; virtual IOStatus Fsync(const IOOptions& opts, IODebugContext* dbg) override; diff --git a/include/rocksdb/env.h b/include/rocksdb/env.h index 78fe7fc860c..955d591c310 100644 --- a/include/rocksdb/env.h +++ b/include/rocksdb/env.h @@ -740,14 +740,6 @@ class RandomAccessFile { // RandomAccessFileWrapper too. }; -// A data structure brings the data verification information, which is -// used togther with data being written to a file. -struct DataVerificationInfo { - DataVerificationInfo(const std::string& checksum_) : checksum(checksum_) {} - // checksum of the data being written. - Slice checksum; -}; - // A file abstraction for sequential writing. The implementation // must provide buffering since callers may append small fragments // at a time to the file. @@ -777,12 +769,6 @@ class WritableFile { // PositionedAppend, so the users cannot mix the two. virtual Status Append(const Slice& data) = 0; - // Append data with verification information - virtual Status AppendWithVerify( - const Slice& data, const DataVerificationInfo& /* verification_info */) { - return Append(data); - } - // PositionedAppend data to the specified offset. The new EOF after append // must be larger than the previous EOF. This is to be used when writes are // not backed by OS buffers and hence has to always start from the start of @@ -809,14 +795,6 @@ class WritableFile { "WritableFile::PositionedAppend() not supported."); } - // PositionedAppend data with verification information. - virtual Status PositionedAppendWithVerify( - const Slice& /* data */, uint64_t /* offset */, - const DataVerificationInfo& /* verification_info */) { - return Status::NotSupported( - "WritableFile::PositionedAppend() not supported."); - } - // Truncate is necessary to trim the file to the correct size // before closing. It is not always possible to keep track of the file // size due to whole pages writes. The behavior is undefined if called @@ -1519,19 +1497,9 @@ class WritableFileWrapper : public WritableFile { explicit WritableFileWrapper(WritableFile* t) : target_(t) {} Status Append(const Slice& data) override { return target_->Append(data); } - Status AppendWithVerify( - const Slice& data, - const DataVerificationInfo& verification_info) override { - return target_->AppendWithVerify(data, verification_info); - } Status PositionedAppend(const Slice& data, uint64_t offset) override { return target_->PositionedAppend(data, offset); } - Status PositionedAppendWithVerify( - const Slice& data, uint64_t offset, - const DataVerificationInfo& verification_info) override { - return target_->PositionedAppendWithVerify(data, offset, verification_info); - } Status Truncate(uint64_t size) override { return target_->Truncate(size); } Status Close() override { return target_->Close(); } Status Flush() override { return target_->Flush(); } diff --git a/include/rocksdb/file_system.h b/include/rocksdb/file_system.h index 76ffd3f3159..f20e2547c76 100644 --- a/include/rocksdb/file_system.h +++ b/include/rocksdb/file_system.h @@ -702,6 +702,13 @@ class FSRandomAccessFile { // RandomAccessFileWrapper too. }; +// A data structure brings the data verification information, which is +// used togther with data being written to a file. +struct DataVerificationInfo { + // checksum of the data being written. + Slice checksum; +}; + // A file abstraction for sequential writing. The implementation // must provide buffering since callers may append small fragments // at a time to the file. @@ -751,9 +758,11 @@ class FSWritableFile { // required is queried via GetRequiredBufferAlignment() // Append data with verification information - virtual IOStatus AppendWithVerify( - const Slice& data, const IOOptions& options, IODebugContext* dbg, - const DataVerificationInfo& /* verification_info */) { + // Note that this API change is experimental and it might be changed in + // the future. Currently, RocksDB does not use this API. + virtual IOStatus Append(const Slice& data, const IOOptions& options, + IODebugContext* dbg, + const DataVerificationInfo& /* verification_info */) { return Append(data, options, dbg); } @@ -765,7 +774,9 @@ class FSWritableFile { } // PositionedAppend data with verification information. - virtual IOStatus PositionedAppendWithVerify( + // Note that this API change is experimental and it might be changed in + // the future. Currently, RocksDB does not use this API. + virtual IOStatus PositionedAppend( const Slice& /* data */, uint64_t /* offset */, const IOOptions& /*options*/, IODebugContext* /*dbg*/, const DataVerificationInfo& /* verification_info */) { @@ -1302,22 +1313,22 @@ class FSWritableFileWrapper : public FSWritableFile { IODebugContext* dbg) override { return target_->Append(data, options, dbg); } - IOStatus AppendWithVerify( - const Slice& data, const IOOptions& options, IODebugContext* dbg, - const DataVerificationInfo& verification_info) override { - return target_->AppendWithVerify(data, options, dbg, verification_info); + IOStatus Append(const Slice& data, const IOOptions& options, + IODebugContext* dbg, + const DataVerificationInfo& verification_info) override { + return target_->Append(data, options, dbg, verification_info); } IOStatus PositionedAppend(const Slice& data, uint64_t offset, const IOOptions& options, IODebugContext* dbg) override { return target_->PositionedAppend(data, offset, options, dbg); } - IOStatus PositionedAppendWithVerify( + IOStatus PositionedAppend( const Slice& data, uint64_t offset, const IOOptions& options, IODebugContext* dbg, const DataVerificationInfo& verification_info) override { - return target_->PositionedAppendWithVerify(data, offset, options, dbg, - verification_info); + return target_->PositionedAppend(data, offset, options, dbg, + verification_info); } IOStatus Truncate(uint64_t size, const IOOptions& options, IODebugContext* dbg) override { diff --git a/utilities/fault_injection_fs.h b/utilities/fault_injection_fs.h index d856cba5dbe..2a233a3fd5b 100644 --- a/utilities/fault_injection_fs.h +++ b/utilities/fault_injection_fs.h @@ -64,6 +64,11 @@ class TestFSWritableFile : public FSWritableFile { virtual ~TestFSWritableFile(); virtual IOStatus Append(const Slice& data, const IOOptions&, IODebugContext*) override; + virtual IOStatus Append( + const Slice& data, const IOOptions& options, IODebugContext* dbg, + const DataVerificationInfo& /*verification_info*/) override { + return Append(data, options, dbg); + } virtual IOStatus Truncate(uint64_t size, const IOOptions& options, IODebugContext* dbg) override { return target_->Truncate(size, options, dbg); @@ -78,6 +83,12 @@ class TestFSWritableFile : public FSWritableFile { IODebugContext* dbg) override { return target_->PositionedAppend(data, offset, options, dbg); } + IOStatus PositionedAppend( + const Slice& data, uint64_t offset, const IOOptions& options, + IODebugContext* dbg, + const DataVerificationInfo& /*verification_info*/) override { + return PositionedAppend(data, offset, options, dbg); + } virtual size_t GetRequiredBufferAlignment() const override { return target_->GetRequiredBufferAlignment(); } From 0dc5f5f797704b77cc54e04414835975197a668a Mon Sep 17 00:00:00 2001 From: Zhichao Cao Date: Wed, 23 Sep 2020 14:50:41 -0700 Subject: [PATCH 3/3] move the DataVerificationInfo before debug --- env/composite_env_wrapper.h | 12 +++++----- env/file_system_tracer.h | 12 +++++----- env/io_posix.h | 16 ++++++------- include/rocksdb/file_system.h | 44 ++++++++++++++++++---------------- utilities/fault_injection_fs.h | 14 +++++------ 5 files changed, 50 insertions(+), 48 deletions(-) diff --git a/env/composite_env_wrapper.h b/env/composite_env_wrapper.h index 2745f3fd2ff..7a0da5c3e26 100644 --- a/env/composite_env_wrapper.h +++ b/env/composite_env_wrapper.h @@ -728,8 +728,8 @@ class LegacyWritableFileWrapper : public FSWritableFile { return status_to_io_status(target_->Append(data)); } IOStatus Append(const Slice& data, const IOOptions& /*options*/, - IODebugContext* /*dbg*/, - const DataVerificationInfo& /*verification_info*/) override { + const DataVerificationInfo& /*verification_info*/, + IODebugContext* /*dbg*/) override { return status_to_io_status(target_->Append(data)); } IOStatus PositionedAppend(const Slice& data, uint64_t offset, @@ -737,10 +737,10 @@ class LegacyWritableFileWrapper : public FSWritableFile { IODebugContext* /*dbg*/) override { return status_to_io_status(target_->PositionedAppend(data, offset)); } - IOStatus PositionedAppend( - const Slice& data, uint64_t offset, const IOOptions& /*options*/, - IODebugContext* /*dbg*/, - const DataVerificationInfo& /*verification_info*/) override { + IOStatus PositionedAppend(const Slice& data, uint64_t offset, + const IOOptions& /*options*/, + const DataVerificationInfo& /*verification_info*/, + IODebugContext* /*dbg*/) override { return status_to_io_status(target_->PositionedAppend(data, offset)); } IOStatus Truncate(uint64_t size, const IOOptions& /*options*/, diff --git a/env/file_system_tracer.h b/env/file_system_tracer.h index 56fd0451a87..4f37cbb0f2b 100644 --- a/env/file_system_tracer.h +++ b/env/file_system_tracer.h @@ -245,18 +245,18 @@ class FSWritableFileTracingWrapper : public FSWritableFileWrapper { IOStatus Append(const Slice& data, const IOOptions& options, IODebugContext* dbg) override; IOStatus Append(const Slice& data, const IOOptions& options, - IODebugContext* dbg, - const DataVerificationInfo& /*verification_info*/) override { + const DataVerificationInfo& /*verification_info*/, + IODebugContext* dbg) override { return Append(data, options, dbg); } IOStatus PositionedAppend(const Slice& data, uint64_t offset, const IOOptions& options, IODebugContext* dbg) override; - IOStatus PositionedAppend( - const Slice& data, uint64_t offset, const IOOptions& options, - IODebugContext* dbg, - const DataVerificationInfo& /*verification_info*/) override { + IOStatus PositionedAppend(const Slice& data, uint64_t offset, + const IOOptions& options, + const DataVerificationInfo& /*verification_info*/, + IODebugContext* dbg) override { return PositionedAppend(data, offset, options, dbg); } diff --git a/env/io_posix.h b/env/io_posix.h index e09df25d1fc..2d8e83c9d79 100644 --- a/env/io_posix.h +++ b/env/io_posix.h @@ -242,9 +242,9 @@ class PosixWritableFile : public FSWritableFile { virtual IOStatus Close(const IOOptions& opts, IODebugContext* dbg) override; virtual IOStatus Append(const Slice& data, const IOOptions& opts, IODebugContext* dbg) override; - virtual IOStatus Append( - const Slice& data, const IOOptions& opts, IODebugContext* dbg, - const DataVerificationInfo& /* verification_info */) override { + virtual IOStatus Append(const Slice& data, const IOOptions& opts, + const DataVerificationInfo& /* verification_info */, + IODebugContext* dbg) override { return Append(data, opts, dbg); } virtual IOStatus PositionedAppend(const Slice& data, uint64_t offset, @@ -252,8 +252,8 @@ class PosixWritableFile : public FSWritableFile { IODebugContext* dbg) override; virtual IOStatus PositionedAppend( const Slice& data, uint64_t offset, const IOOptions& opts, - IODebugContext* dbg, - const DataVerificationInfo& /* verification_info */) override { + const DataVerificationInfo& /* verification_info */, + IODebugContext* dbg) override { return PositionedAppend(data, offset, opts, dbg); } virtual IOStatus Flush(const IOOptions& opts, IODebugContext* dbg) override; @@ -342,9 +342,9 @@ class PosixMmapFile : public FSWritableFile { virtual IOStatus Close(const IOOptions& opts, IODebugContext* dbg) override; virtual IOStatus Append(const Slice& data, const IOOptions& opts, IODebugContext* dbg) override; - virtual IOStatus Append( - const Slice& data, const IOOptions& opts, IODebugContext* dbg, - const DataVerificationInfo& /* verification_info */) override { + virtual IOStatus Append(const Slice& data, const IOOptions& opts, + const DataVerificationInfo& /* verification_info */, + IODebugContext* dbg) override { return Append(data, opts, dbg); } virtual IOStatus Flush(const IOOptions& opts, IODebugContext* dbg) override; diff --git a/include/rocksdb/file_system.h b/include/rocksdb/file_system.h index f20e2547c76..3683491c1ba 100644 --- a/include/rocksdb/file_system.h +++ b/include/rocksdb/file_system.h @@ -736,6 +736,16 @@ class FSWritableFile { virtual IOStatus Append(const Slice& data, const IOOptions& options, IODebugContext* dbg) = 0; + // EXPERIMENTAL / CURRENTLY UNUSED + // Append data with verification information + // Note that this API change is experimental and it might be changed in + // the future. Currently, RocksDB does not use this API. + virtual IOStatus Append(const Slice& data, const IOOptions& options, + const DataVerificationInfo& /* verification_info */, + IODebugContext* dbg) { + return Append(data, options, dbg); + } + // PositionedAppend data to the specified offset. The new EOF after append // must be larger than the previous EOF. This is to be used when writes are // not backed by OS buffers and hence has to always start from the start of @@ -756,16 +766,6 @@ class FSWritableFile { // // PositionedAppend() requires aligned buffer to be passed in. The alignment // required is queried via GetRequiredBufferAlignment() - - // Append data with verification information - // Note that this API change is experimental and it might be changed in - // the future. Currently, RocksDB does not use this API. - virtual IOStatus Append(const Slice& data, const IOOptions& options, - IODebugContext* dbg, - const DataVerificationInfo& /* verification_info */) { - return Append(data, options, dbg); - } - virtual IOStatus PositionedAppend(const Slice& /* data */, uint64_t /* offset */, const IOOptions& /*options*/, @@ -773,13 +773,15 @@ class FSWritableFile { return IOStatus::NotSupported(); } + // EXPERIMENTAL / CURRENTLY UNUSED // PositionedAppend data with verification information. // Note that this API change is experimental and it might be changed in // the future. Currently, RocksDB does not use this API. virtual IOStatus PositionedAppend( const Slice& /* data */, uint64_t /* offset */, - const IOOptions& /*options*/, IODebugContext* /*dbg*/, - const DataVerificationInfo& /* verification_info */) { + const IOOptions& /*options*/, + const DataVerificationInfo& /* verification_info */, + IODebugContext* /*dbg*/) { return IOStatus::NotSupported(); } @@ -1314,21 +1316,21 @@ class FSWritableFileWrapper : public FSWritableFile { return target_->Append(data, options, dbg); } IOStatus Append(const Slice& data, const IOOptions& options, - IODebugContext* dbg, - const DataVerificationInfo& verification_info) override { - return target_->Append(data, options, dbg, verification_info); + const DataVerificationInfo& verification_info, + IODebugContext* dbg) override { + return target_->Append(data, options, verification_info, dbg); } IOStatus PositionedAppend(const Slice& data, uint64_t offset, const IOOptions& options, IODebugContext* dbg) override { return target_->PositionedAppend(data, offset, options, dbg); } - IOStatus PositionedAppend( - const Slice& data, uint64_t offset, const IOOptions& options, - IODebugContext* dbg, - const DataVerificationInfo& verification_info) override { - return target_->PositionedAppend(data, offset, options, dbg, - verification_info); + IOStatus PositionedAppend(const Slice& data, uint64_t offset, + const IOOptions& options, + const DataVerificationInfo& verification_info, + IODebugContext* dbg) override { + return target_->PositionedAppend(data, offset, options, verification_info, + dbg); } IOStatus Truncate(uint64_t size, const IOOptions& options, IODebugContext* dbg) override { diff --git a/utilities/fault_injection_fs.h b/utilities/fault_injection_fs.h index 2a233a3fd5b..4c4a1612b85 100644 --- a/utilities/fault_injection_fs.h +++ b/utilities/fault_injection_fs.h @@ -64,9 +64,9 @@ class TestFSWritableFile : public FSWritableFile { virtual ~TestFSWritableFile(); virtual IOStatus Append(const Slice& data, const IOOptions&, IODebugContext*) override; - virtual IOStatus Append( - const Slice& data, const IOOptions& options, IODebugContext* dbg, - const DataVerificationInfo& /*verification_info*/) override { + virtual IOStatus Append(const Slice& data, const IOOptions& options, + const DataVerificationInfo& /*verification_info*/, + IODebugContext* dbg) override { return Append(data, options, dbg); } virtual IOStatus Truncate(uint64_t size, const IOOptions& options, @@ -83,10 +83,10 @@ class TestFSWritableFile : public FSWritableFile { IODebugContext* dbg) override { return target_->PositionedAppend(data, offset, options, dbg); } - IOStatus PositionedAppend( - const Slice& data, uint64_t offset, const IOOptions& options, - IODebugContext* dbg, - const DataVerificationInfo& /*verification_info*/) override { + IOStatus PositionedAppend(const Slice& data, uint64_t offset, + const IOOptions& options, + const DataVerificationInfo& /*verification_info*/, + IODebugContext* dbg) override { return PositionedAppend(data, offset, options, dbg); } virtual size_t GetRequiredBufferAlignment() const override {