sync_file_range(2) System Calls Manual sync_file_range(2) sync_file_range - Standard C library (libc, -lc) #define _GNU_SOURCE /* . feature_test_macros(7) */ #define _FILE_OFFSET_BITS 64 #include int sync_file_range(int fd, off_t offset, off_t nbytes, unsigned int flags); sync_file_range() , fd, . offset , . nbytes ( ); nbytes , , offset . : offset ; (offset+nbytes-1) . flags : SYNC_FILE_RANGE_WAIT_BEFORE , , . SYNC_FILE_RANGE_WRITE , . , , . SYNC_FILE_RANGE_WAIT_AFTER , . 0 flags ; . . . , , , . , , . , (, btrfs) . , , . - . SYNC_FILE_RANGE_WAIT_BEFORE SYNC_FILE_RANGE_WAIT_AFTER - ENOSPC, . flags: SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE , sync_file_range() . . SYNC_FILE_RANGE_WRITE , . . . SYNC_FILE_RANGE_WAIT_BEFORE ( SYNC_FILE_RANGE_WAIT_AFTER) . SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE, . SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE | SYNC_FILE_RANGE_WAIT_AFTER , , sync_file_range() . sync_file_range() 0. -1, errno . EBADF fd . EINVAL flags ; offset nbytes. EIO -. ENOMEM . ENOSPC . ESPIPE fd , , . sync_file_range2() (, PowerPC, ARM) , 64- . sync_file_range(), , fd offset ( syscall(2)). : int sync_file_range2(int fd, unsigned int flags, off_t offset, off_t nbytes); sync_file_range(). Linux. Linux 2.6.17. sync_file_range2() ARM Linux 2.6.20 arm_sync_file_range(). Linux 2.6.22 , PowerPC. , glibc, glibc sync_file_range2() sync_file_range(). _FILE_OFFSET_BITS should be defined to be 64 in code that takes the address of sync_file_range, if the code is intended to be portable to traditional 32-bit x86 and ARM platforms where off_t's width defaults to 32 bits. fdatasync(2), fsync(2), msync(2), sync(2) () Alexander Golubev , Azamat Hackimov , Hotellook, Nikita , Spiros Georgaras , Vladislav , Yuri Kozlov , Kirill Rekhov ; GNU (GNU General Public License - GPL, 3 ) , - . - , , () () () <>. Linux man-pages 6.12 23 2024 . sync_file_range(2)