in src/fs.rs [971:1003]
fn direct_read<'a>() {
init();
let dir = tempfile::Builder::new()
.prefix("direct_read")
.tempdir()
.unwrap();
let mnt = dir.into_path();
let mnt_str = String::from(mnt.to_str().unwrap());
let daemon = mount_tempdir_ro(mnt);
info!("mounted fs at {} in thread {:#?}", mnt_str, daemon);
let tif_file = LANDSAT_B7_TIF;
let sub_dir = LANDSAT_SUBDIR;
let to_open = format!("{}/{}/{}", mnt_str, sub_dir, tif_file);
info!("Try to open '{}'", to_open);
use std::os::unix::fs::OpenOptionsExt;
let mut fh = std::fs::OpenOptions::new()
.read(true)
.custom_flags(libc::O_DIRECT)
.open(to_open)
.expect("Failed to open file");
let mut buffer = [0; 1024 * 1024];
info!("About to read 1MB from {:#?}", fh);
let result = fh.read(&mut buffer);
info!(" got back {:#?}", result);
drop(daemon);
}