fix WritableFile buffer size in direct IO
Summary: �fix the buffer size in case of ppl use buffer size as their block_size. Closes https://github.com/facebook/rocksdb/pull/2198 Differential Revision: D4956878 Pulled By: lightmark fbshipit-source-id: 8bb0dc9c133887aadcd625d5261a3d1110b71473
This commit is contained in:
parent
2b621c1f83
commit
1530f38baa
@ -690,7 +690,9 @@ struct DBOptions {
|
|||||||
|
|
||||||
// This is the maximum buffer size that is used by WritableFileWriter.
|
// This is the maximum buffer size that is used by WritableFileWriter.
|
||||||
// On Windows, we need to maintain an aligned buffer for writes.
|
// On Windows, we need to maintain an aligned buffer for writes.
|
||||||
// We allow the buffer to grow until it's size hits the limit.
|
// We allow the buffer to grow until it's size hits the limit in buffered
|
||||||
|
// IO and fix the buffer size when using direct IO to ensure alignment of
|
||||||
|
// write requests if the logical sector size is unusual
|
||||||
//
|
//
|
||||||
// Default: 1024 * 1024 (1 MB)
|
// Default: 1024 * 1024 (1 MB)
|
||||||
size_t writable_file_max_buffer_size = 1024 * 1024;
|
size_t writable_file_max_buffer_size = 1024 * 1024;
|
||||||
|
@ -138,7 +138,9 @@ class WritableFileWriter {
|
|||||||
rate_limiter_(options.rate_limiter),
|
rate_limiter_(options.rate_limiter),
|
||||||
stats_(stats) {
|
stats_(stats) {
|
||||||
buf_.Alignment(writable_file_->GetRequiredBufferAlignment());
|
buf_.Alignment(writable_file_->GetRequiredBufferAlignment());
|
||||||
buf_.AllocateNewBuffer(std::min((size_t)65536, max_buffer_size_));
|
buf_.AllocateNewBuffer(use_direct_io()
|
||||||
|
? max_buffer_size_
|
||||||
|
: std::min((size_t)65536, max_buffer_size_));
|
||||||
}
|
}
|
||||||
|
|
||||||
WritableFileWriter(const WritableFileWriter&) = delete;
|
WritableFileWriter(const WritableFileWriter&) = delete;
|
||||||
|
Loading…
Reference in New Issue
Block a user