Prototype:
int (*sync) ( resmgr_context_t *ctp,
io_sync_t *msg,
RESMGR_OCB_T *ocb )
Classification:
I/O
Messages:
_IO_SYNC
Data structure:
struct _io_sync {
uint16_t type;
uint16_t combine_len;
uint32_t flag;
};
typedef union {
struct _io_sync i;
} io_sync_t;
Description:
This is the entry point for a flush command.
The helper function
iofunc_sync() is passed the
flag member from the
input message, and returns one of the following values, which indicate what actions your
resource manager must take:
- 0—do nothing.
- O_SYNC—everything associated with the file (including the
file contents, directory structures, inodes, etc.) must be present and recoverable from media.
- O_DSYNC—only the data portion of the file must be present
and recoverable from media.
Note that this outcall will occur only if you've agreed to provide sync services by setting
the mount structure flag.
Returns:
Returns the status via the helper macro _RESMGR_STATUS().
Permission checking:
The default implementation
iofunc_sync_default()
calls the helper function
iofunc_sync_verify(), but
does not actually synchronize anything after verifying. The
iofunc_sync_verify() function verifies that the filesystem was
mounted with the IOFUNC_PC_SYNC_IO flag. The
iofunc_sync() helper
function verifies that it is not a read-only filesystem when it determines whether
synchronization is needed.