Commit d519111a authored by zhangjinpeng1987's avatar zhangjinpeng1987 Committed by siddontang

support direct io (#52)

parent d2a3f79f
...@@ -1763,6 +1763,14 @@ void crocksdb_options_set_compression_options(crocksdb_options_t* opt, int w_bit ...@@ -1763,6 +1763,14 @@ void crocksdb_options_set_compression_options(crocksdb_options_t* opt, int w_bit
opt->rep.compression_opts.max_dict_bytes = max_dict_bytes; opt->rep.compression_opts.max_dict_bytes = max_dict_bytes;
} }
void crocksdb_options_set_use_direct_reads(crocksdb_options_t* opt, unsigned char v) {
opt->rep.use_direct_reads = v;
}
void crocksdb_options_set_use_direct_writes(crocksdb_options_t* opt, unsigned char v) {
opt->rep.use_direct_writes = v;
}
void crocksdb_options_set_prefix_extractor( void crocksdb_options_set_prefix_extractor(
crocksdb_options_t* opt, crocksdb_slicetransform_t* prefix_extractor) { crocksdb_options_t* opt, crocksdb_slicetransform_t* prefix_extractor) {
opt->rep.prefix_extractor.reset(prefix_extractor); opt->rep.prefix_extractor.reset(prefix_extractor);
......
...@@ -610,6 +610,10 @@ extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_max_total_wal_size( ...@@ -610,6 +610,10 @@ extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_max_total_wal_size(
crocksdb_options_t* opt, uint64_t n); crocksdb_options_t* opt, uint64_t n);
extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_compression_options( extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_compression_options(
crocksdb_options_t*, int, int, int, int); crocksdb_options_t*, int, int, int, int);
extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_use_direct_reads(crocksdb_options_t* opt,
unsigned char v);
extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_use_direct_writes(crocksdb_options_t* opt,
unsigned char v);
extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_prefix_extractor( extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_prefix_extractor(
crocksdb_options_t*, crocksdb_slicetransform_t*); crocksdb_options_t*, crocksdb_slicetransform_t*);
extern C_ROCKSDB_LIBRARY_API void extern C_ROCKSDB_LIBRARY_API void
......
...@@ -283,6 +283,8 @@ extern "C" { ...@@ -283,6 +283,8 @@ extern "C" {
pub fn crocksdb_options_set_wal_dir(options: *mut DBOptions, path: *const c_char); pub fn crocksdb_options_set_wal_dir(options: *mut DBOptions, path: *const c_char);
pub fn crocksdb_options_set_wal_ttl_seconds(options: *mut DBOptions, ttl: u64); pub fn crocksdb_options_set_wal_ttl_seconds(options: *mut DBOptions, ttl: u64);
pub fn crocksdb_options_set_wal_size_limit_mb(options: *mut DBOptions, limit: u64); pub fn crocksdb_options_set_wal_size_limit_mb(options: *mut DBOptions, limit: u64);
pub fn crocksdb_options_set_use_direct_reads(options: *mut DBOptions, v: bool);
pub fn crocksdb_options_set_use_direct_writes(options: *mut DBOptions, v: bool);
pub fn crocksdb_options_set_prefix_extractor(options: *mut DBOptions, pub fn crocksdb_options_set_prefix_extractor(options: *mut DBOptions,
prefix_extractor: *mut DBSliceTransform); prefix_extractor: *mut DBSliceTransform);
pub fn crocksdb_options_set_optimize_filters_for_hits(options: *mut DBOptions, v: bool); pub fn crocksdb_options_set_optimize_filters_for_hits(options: *mut DBOptions, v: bool);
......
...@@ -479,6 +479,18 @@ impl Options { ...@@ -479,6 +479,18 @@ impl Options {
} }
} }
pub fn set_use_direct_reads(&mut self, v: bool) {
unsafe {
crocksdb_ffi::crocksdb_options_set_use_direct_reads(self.inner, v);
}
}
pub fn set_use_direct_writes(&mut self, v: bool) {
unsafe {
crocksdb_ffi::crocksdb_options_set_use_direct_writes(self.inner, v);
}
}
pub fn set_soft_pending_compaction_bytes_limit(&mut self, size: u64) { pub fn set_soft_pending_compaction_bytes_limit(&mut self, size: u64) {
unsafe { unsafe {
crocksdb_ffi::crocksdb_options_set_soft_pending_compaction_bytes_limit(self.inner, crocksdb_ffi::crocksdb_options_set_soft_pending_compaction_bytes_limit(self.inner,
......
...@@ -274,3 +274,13 @@ fn test_set_level_compaction_dynamic_level_bytes() { ...@@ -274,3 +274,13 @@ fn test_set_level_compaction_dynamic_level_bytes() {
opts.set_level_compaction_dynamic_level_bytes(true); opts.set_level_compaction_dynamic_level_bytes(true);
DB::open(opts, path.path().to_str().unwrap()).unwrap(); DB::open(opts, path.path().to_str().unwrap()).unwrap();
} }
#[test]
fn test_direct_read_write() {
let path = TempDir::new("_rust_rocksdb_direct_read_write").expect("");
let mut opts = Options::new();
opts.create_if_missing(true);
opts.set_use_direct_reads(true);
opts.set_use_direct_writes(true);
DB::open(opts, path.path().to_str().unwrap()).unwrap();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment