For example, I use mmap to map a file into the memory as read-only shared mode. And I read some data on the file based on their address in the memory. What if I call write and fsync to update or changes the underlying file after then? Will the data in the memory also change? Or I need to call some other system call to synchronize the mapped memory? I find this question when reading source code of BoltDB.
Is it safe to use mmap with fsync? (will fsync invalidate some page on mmap?)
967 views Asked by chenyuandong At
1
There are 1 answers
Related Questions in LINUX
- Is there some way to use printf to print a horizontal list of decrementing hex digits in NASM assembly on Linux
- Why does Hugo generate different taxonomy-related HTML on different OS's?
- Writes in io_uring do not advance the file offset
- Why `set -o pipefail` gives different output even though the pipe is not failing
- what really controls the permissions: UID or eUID?
- Compiling eBPF program in Docker fails due to missing '__u64' type
- Docker container unable to make HTTPS requests to external API
- Whow to use callback_query_handler in Python 3.10
- Create kea runtime directory at startup in Yocto image
- Problem on CPU scheduling algorithms in OS
- How to copy files into the singularity sandbox?
- Android kernel error: undefined reference to `get_hw_version_platform'
- Is there a need for BPF Linux namespace?
- Error when trying to execute a binary compiled in a Kali Linux machine on an Ubuntu system
- Issue with launching application after updating ElectronJs to version 28.0.0 on Windows and Linux
Related Questions in GO
- Go Fiber and HTMX - HX-Trigger header is changed to Hx-Trigger, which is not what HTMX is listening for
- Golang == Error: OCI runtime create failed: unable to start container process: exec: "./bin": stat ./bin: no such file or directory: unknown
- Handling both JSON and form values in POST request body with unknown values in Golang
- invalid transaction: Transaction failed to sanitize accounts offsets correctly
- Golang lambda upload image into s3 static website
- Is there a way to get a list of selected module versions, but only for modules within the pruned graph?
- Save Interface in DB golang
- ERROR: column "country" is of type text[] but expression is of type record (SQLSTATE 42804)
- Trying to update the version.go file with the release tag from GitHub actions but its failing
- How can I optimize this transposition table for connect 4 AI?
- const declaration - How to evaluate expressions at compile time?
- How add array of authors for unique user in database in Goland IDE?
- Why is the main goroutine not blocked after write in unbuffered channel?
- Insert & Retrieve from a channel in same main function throws "goroutine 1 [chan receive]: main.main() /path exit status 2" error
- Gob error when decoding array of structs: decoding into local type but received remote type
Related Questions in BOLTDB
- Loki s3 configuration for chunks and indexes
- Is it possible to retrieve creation date & time of a key-value pair in etcd?
- Store and retrieve items in order using BoltDB
- Corruption of Portainer's DB
- Go boltDB query using bolthold 3 conditions
- Go boltDB query using bolthold
- Golang BoltDB Delete Key Seemingly Not Working
- boltdb update freezes on commit
- Is it safe to use embedded database (RocksDB, BoltDB, BadgerDB) on DigitalOcean block storage?
- Loki config with s3
- value for a key in a map is being changed automatically in golang
- "unresolve reference errors" in golang
- How to detect the goroutine that occupies the lock?
- Is it safe to use mmap with fsync? (will fsync invalidate some page on mmap?)
- How to update an entry in boltdb using python3.6
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
The same question bothered me when I was reading the source code of boltdb. I searched/reviewed a lot of articles on Google but still didn't get an answer.
I knew that linux has a
dnotify/inodtify system to monitor file changes, thus it is sure that kernel knows changes made to a file.The man page for mmap didn't describe the satiation mentioned here, but the description for MAP_SHARED did mention that
I think it should be a reasonable guess that MAP_SHARED guarantees changes made to the underlying file are seen to all mapped memory regions. Hope someday a Linux kernel expert can provide some details on this.