FS_COMMIT
Purpose
Flush requesting process's cache buffers and update directory information for the file handle.
Calling Sequence
int far pascal FS_COMMIT(type, IOflag, psffsi, psffsd) unsigned short type; unsigned short IOflag; struct sffsi far * psffsi; struct sffsd far* psffsd;
Where
type | indicates what type of a commit operation this is. |
---|---|
type == 1 | indicates that this is a commit for a specific handle. This type is specified if FS_COMMIT is called for a DosBufReset of a specific handle. |
type == 2 | indicates that this is a commit due to a DosBufReset (-1). |
IOflag | indicates information about the operation on the handle. |
---|---|
IOflag == 0x0010 | indicates write-through. |
IOflag == 0x0020 | indicates no-cache. |
psffsi is a pointer to the file-system-independent portion of an open file instance.
psffsd is a pointer to the file-system-dependent portion of an open file instance.
Remarks
This entry point is called only as a result of a DosBufReset function call. OS/2 reserves the right to call FS_COMMIT even if no changes have been made to the file.
For DosBufReset (-1), FS_COMMIT will be called for each open handle on the FSD.
The FSD should update access and modification times, if appropriate.
Any locally cached information about the file must be output to the media. The directory entry for the file is to be updated from the sffsi and sffsd data structures.
Since mini-FSDs used to boot IFSs are read-only file systems, they need not support the FS_COMMIT call.
Of the information passed in IOflag, the write-through bit is a MANDATORY bit in that any data written to the block device must be put out on the medium before the device driver returns. The no-cache bit, on the other hand, is an advisory bit that says whether the data being transferred is worth caching or not.
The FSD should copy all supported time stamps from the SFT to the disk. Beware that the last read time stamp may need to be written to the disk even though the file is clean. After this is done, the FSD should clear the sfi_tstamp field to avoid having to write to the disk again if the user calls commit repeatedly without changing any of the time stamps.
If the disk is not writeable and only the last read time stamp has changed, the FSD should either issue a warning or ignore the error. This relieves the user from having to un-protect an FSD floppy disk in order to read the files on it.