Copyright © tutorialspoint.com
#define _GNU_SOURCE #include <fcntl.h> |
offset is the starting byte of the file range to be synchronised. nbytes specifies the length of the range to be synchronised, in bytes; if nbytes is zero, then all bytes from offset through to the end of file are synchronised. Synchronisation is in units of the system page size: offset is rounded down to a page boundary; (offset+nbytes-1) is rounded up to a page boundary.
The flags bit-mask argument can include any of the following values:
Tag | Description |
---|---|
SYNC_FILE_RANGE_WAIT_BEFORE | |
Wait upon write-out of all pages in the specified range that have already been submitted to the device driver for write-out before performing any write. | |
SYNC_FILE_RANGE_WRITE | |
Initiate write-out of all dirty pages in the specified range which are not presently submitted write-out. | |
SYNC_FILE_RANGE_WAIT_AFTER | |
Wait upon write-out of all pages in the range after performing any write. |
SYNC_FILE_RANGE_WAIT_BEFORE and SYNC_FILE_RANGE_WAIT_AFTER will detect any I/O errors or ENOSPC conditions and will return these to the caller.
Useful combinations of the flags bits are:
Tag | Description |
---|---|
SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE | |
Ensures that all pages in the specified range which were dirty when sync_file_range() was called are placed under write-out. This is a start-write-for-data-integrity operation. | |
SYNC_FILE_RANGE_WRITE | |
Start write-out of all dirty pages in the specified range which are not presently under write-out. This is an asynchronous flush-to-disk operation. This is not suitable for data integrity operations. | |
SYNC_FILE_RANGE_WAIT_BEFORE (or SYNC_FILE_RANGE_WAIT_AFTER) | |
Wait for completion of write-out of all pages in the specified range. This can be used after an earlier SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE operation to wait for completion of that operation, and obtain its result. | |
SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE | SYNC_FILE_RANGE_WAIT_AFTER | |
This is a traditional fdatasync(2) operation. It is a write-for-data-integrity operation that will ensure that all pages in the specified range which were dirty when sync_file_range() was called are committed to disk. |
Tag | Description |
---|---|
EBADF | fd is not a valid file descriptor. |
EIO | I/O error. |
EINVAL | flags specifies an invalid bit; or offset or nbytes is invalid. |
ENOMEM | Out of memory. |
ENOSPC | Out of disk space. |
ESPIPE | fd refers to something other than a regular file, a block device, a directory, or a symbolic link. |
Copyright © tutorialspoint.com