| Anonymous | Login | Signup for a new account | 2013-05-22 08:59 CEST | ![]() |
| Main | My View | View Issues | Change Log | Roadmap |
| View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||||
| ID | Project | Category | View Status | Date Submitted | Last Update | ||||||
| 0002533 | OCaml | OCaml general | public | 2004-04-30 17:00 | 2010-03-30 16:21 | ||||||
| Reporter | administrator | ||||||||||
| Assigned To | shinwell | ||||||||||
| Priority | normal | Severity | feature | Reproducibility | always | ||||||
| Status | assigned | Resolution | open | ||||||||
| Platform | OS | OS Version | |||||||||
| Product Version | |||||||||||
| Target Version | Fixed in Version | ||||||||||
| Summary | 0002533: Feature wish: Unix.fsync, etc. | ||||||||||
| Description | Hi, having to write a very filesystem-oriented system, I am in need of system calls for synchronizing the in-core state of files and directories with that on disk. It would be nice to see the following easily implementable system calls in the Unix-module (currently I'm working with extensions): val fsync : file_descr -> unit val fdatasync : file_descr -> unit val dirfd : dir_handle -> file_descr The last function (BSD, the other two are POSIX.1b) is needed, because synchronizing data with fdatasync (and also metadata + data with fsync) does not synchronize the directory entries as such. For this it is necessary to extract the file descriptor from the directory stream and explicitly call fsync on it. If there are reasons not to exhibit the file_descr associated with a dir_handle, a function "val dir_sync : dir_handle -> unit" would also be a possibility. It may be too inefficient to open files with every write being synchronized (O_SYNC, etc.). Sometimes I even only want the directory to be synchronized, not the data. Best regards, Markus -- Markus Mottl http://www.oefai.at/~markus [^] markus@oefai.at | ||||||||||
| Tags | No tags attached. | ||||||||||
| Attached Files | |||||||||||
Notes |
|
|
(0005252) mottl (reporter) 2010-02-25 19:24 |
This has been around for a really long time. I think at least the following POSIX system calls concerning syncing should be supported: sync and fsync. They are available on virtually every Unix system and indispensable for applications that need persistence guarantees. Note that fdatasync is not supported on FreeBSD and Mac OS X. |
|
(0005270) avsm (reporter) 2010-03-20 21:19 |
fsync(2) is also more relaxed on MacOS X; it needs the F_FULLFSYNC fcntl to ensure it actually hits the disk in-order. |
|
(0005277) shinwell (developer) 2010-03-30 13:01 |
Markus, do you have a pre-existing patch for this (or could you construct one) which could be looked at? |
|
(0005281) mottl (reporter) 2010-03-30 16:21 |
Yes, just take a look at our Core-library, file "unix_ext_stubs.c". It contains a function "unix_fsync" that can surely be taken verbatim. There are several other functions there that could probably be added to the OCaml distribution immediately, because they are well-standardized in POSIX and do not require elaborate API additions (types, etc.). E.g. pselect, abort, sync. Some of the others are also well-standardized, but would need extra types, etc. I'm not sure what the OCaml team's preferred procedure for adding those would be. |
Issue History |
|||
| Date Modified | Username | Field | Change |
| 2005-11-18 10:13 | administrator | New Issue | |
| 2010-02-25 19:24 | mottl | Note Added: 0005252 | |
| 2010-03-20 21:19 | avsm | Note Added: 0005270 | |
| 2010-03-30 13:01 | shinwell | Note Added: 0005277 | |
| 2010-03-30 13:02 | shinwell | Status | acknowledged => assigned |
| 2010-03-30 13:02 | shinwell | Assigned To | => shinwell |
| 2010-03-30 16:21 | mottl | Note Added: 0005281 | |
| Copyright © 2000 - 2011 MantisBT Group |