#linux - API ```c int sync_file_range(int fd, off_t offset, off_t nbytes, unsigned int flags); ``` - 参数: - **offset**: 文件范围的起始位置 - **nbytes**:范围的大小。如果为 0 ,则表示到文件末尾。 - sync 以 page 为单位,范围的起始和结束最终都会对齐到 page 边界。 - flags - **SYNC_FILE_RANGE_WAIT_BEFORE**: - ==等待==指定范围内的 pages 写出(提交给 device driver ) - 如果跟 SYNC_FILE_RANGE_WRITE 一起使用,则是先等待之前同范围内的请求完成,再处理当前 sync 请求。 - **SYNC_FILE_RANGE_WRITE** - 异步提交写指定范围内的脏页,但仍然可能会==阻塞==如果请求队列满了。 - **SYNC_FILE_RANGE_WAIT_AFTER** - 同 SYNC_FILE_RANGE_WAIT_BEFORE - 区别在于跟 SYNC_FILE_RANGE_WRITE 一起使用时,会等待==当前== sync 请求的结果。 - 错误返回: - SYNC_FILE_RANGE_WAIT_BEFORE 和 SYNC_FILE_RANGE_WAIT_AFTER 出错都会返回错误