fsync(2) - wariua/manpages-ko GitHub Wiki
fsync, fdatasync - νμΌμ μ½μ΄ λ΄ μνλ₯Ό μ μ₯ μ₯μΉμ λκΈ°ννκΈ°
#include <unistd.h>
int fsync(int fd);
int fdatasync(int fd);
glibc κΈ°λ₯ νμΈ λ§€ν¬λ‘ μ건 (feature_test_macros(7) μ°Έκ³ ):
-
fsync()
: -
- glibc 2.16 λ° μ΄ν:
- μ΄λ€ κΈ°λ₯ νμΈ λ§€ν¬λ‘λ μ μλΌ μμ νμ μμ
- glibc 2.15κΉμ§:
_BSD_SOURCE || _XOPEN_SOURCE
|| /* glibc 2.8λΆν°: */ _POSIX_C_SOURCE >= 200112L
-
fdatasync()
: _POSIX_C_SOURCE >= 199309L || _XOPEN_SOURCE >= 500
fsync()
λ νμΌ λμ€ν¬λ¦½ν° fd
κ° κ°λ¦¬ν€λ νμΌμ λ³κ²½λ μ½μ΄ λ΄ λ°μ΄ν° (μ¦ λ³κ²½λ λ²νΌ μΊμ νμ΄μ§) λͺ¨λλ₯Ό λμ€ν¬ μ₯μΉλ‘ (λλ λ€λ₯Έ μμ μ μ₯ μ₯μΉλ‘) μ΄λ("νλ¬μ")νλ€. κ·Έλμ μμ€ν
μ΄ μ£½κ±°λ μ¬λΆν
λλ κ²½μ°μλ λ°λ μ 보λ₯Ό λͺ¨λ μ»μ μ μλλ‘ νλ€. λμ€ν¬ μΊμκ° μ‘΄μ¬νλ κ²½μ° κ·Έ μΊμλ₯Ό ν΅κ³Όν΄ κΈ°λ‘νκ±°λ νλ¬μ νλ κ²κΉμ§ ν¬ν¨νλ€. μ΄λμ΄ μλ£λλ€κ³ μ₯μΉκ° μ릴 λκΉμ§ νΈμΆμ΄ λΈλ‘ νλ€.
fsync()
λ νμΌ λ°μ΄ν°λ₯Ό νλ¬μ ν λΏ μλλΌ νμΌμ μ°κ³λ λ©νλ°μ΄ν° μ 보(inode(7) μ°Έκ³ )λ νλ¬μ νλ€.
fsync()
λ₯Ό νΈμΆν΄λ κ·Έ νμΌμ λ΄μ λλ ν°λ¦¬ λ΄ νλͺ©κΉμ§ λμ€ν¬μ λλ¬νλ€κ³ 보μ₯λμ§λ μλλ€. λλ ν°λ¦¬μ λν νμΌ λμ€ν¬λ¦½ν°μλ λ°λ‘ fsync()
κ° νμνλ€.
fdatasync()
λ fsync()
μ λΉμ·νλ νμ λ°μ΄ν° μ‘°νλ₯Ό μ¬λ°λ‘ μ²λ¦¬νλ λ° νμν κ² μλλΌλ©΄ λ³κ²½λ λ©νλ°μ΄ν°λ₯Ό νλ¬μ νμ§ μλλ€. μλ₯Ό λ€μ΄ st_atime
μ΄λ st_mtime
(κ°κ° μ΅κ·Ό μ κ·Ό μκ°κ³Ό μ΅κ·Ό μμ μκ°. inode(7) μ°Έκ³ ) λ³κ²½μ νμ λ°μ΄ν° μ½κΈ°λ₯Ό μ¬λ°λ‘ μ²λ¦¬νλ λ° νμνμ§ μμΌλ―λ‘ νλ¬μ ν νμκ° μλ€. λ°λ©΄ (κ°λ Ή ftruncate(2)λ₯Ό ν΅ν) νμΌ ν¬κΈ°(st_size
) λ³κ²½μ λ©νλ°μ΄ν° νλ¬μκ° νμν κ²μ΄λ€.
fdatasync()
μ λͺ©μ μ λͺ¨λ λ©νλ°μ΄ν°κ° λμ€ν¬μ λκΈ°νλΌμΌ νλ 건 μλ μμ©μμ λμ€ν¬ νλμ μ€μ΄λ κ²μ΄λ€.
μ±κ³΅ μ μ΄ μμ€ν
νΈμΆλ€μ 0μ λ°ννλ€. μ€λ₯ μ -1μ λ°ννλ©° errno
λ₯Ό μ μ ν μ€μ νλ€.
EBADF
-
fd
κ° μ ν¨ν μ΄λ¦° νμΌ λμ€ν¬λ¦½ν°κ° μλλ€. EIO
- λκΈ°ν μ€μ μ€λ₯κ° λ°μνλ€. μ΄ μ€λ₯λ κ°μ νμΌμ λν μ΄λ€ λ€λ₯Έ νμΌ λμ€ν¬λ¦½ν°μ λ°μ΄ν°λ₯Ό κΈ°λ‘ν κ²κ³Ό κ΄λ ¨λΌ μμ μ μλ€. 리λ μ€ 4.13λΆν°λ write-backμμμ μ€λ₯λ₯Ό κ·Έ μ€λ₯λ₯Ό μ΄λ°ν λ°μ΄ν°λ₯Ό κΈ°λ‘νμ μλ μλ λͺ¨λ νμΌ λμ€ν¬λ¦½ν°λ€λ‘ λ³΄κ³ νλ€. μ΄λ€ νμΌ μμ€ν λ€(κ°λ Ή NFS)μ μ΄λ λ°μ΄ν°κ° μ΄λ νμΌ λμ€ν¬λ¦½ν°λ₯Ό ν΅ν΄ μλμ§ λ°μ νκ² μΆμ νλ―λ‘ λ μ ννκ² λ³΄κ³ νλ€. νμ§λ§ λ€λ₯Έ νμΌ μμ€ν λ€(κ°λ Ή λλΆλΆμ λ‘컬 νμΌ μμ€ν )μ μ€λ₯κ° κΈ°λ‘λμ λ νμΌμ λν΄ μ΄λ € μλ λͺ¨λ νμΌ λμ€ν¬λ¦½ν°λ‘ μ€λ₯λ₯Ό λ³΄κ³ νλ€.
ENOSPC
- λκΈ°ν μ€μ λμ€ν¬ 곡κ°μ΄ κ³ κ°λμλ€.
-
EROFS
,EINVAL
-
fd
κ° λκΈ°νλ₯Ό μ§μνμ§ μλ νΉμ νμΌ(κ°λ Ή νμ΄ν, FIFO, μμΌ)μ κ²°μλΌ μλ€. -
ENOSPC
,EDQUOT
-
write(2)
μμ€ν νΈμΆ μμ μ 곡κ°μ ν λΉνμ§ μλ NFSλ λ€λ₯Έ νμΌ μμ€ν μμ νμΌμfd
κ° κ²°μλΌ μμΌλ©° μ΄μ μ μ΄λ€ μ°κΈ° λμμ΄ μ μ₯ κ³΅κ° λΆμΆ©λΆ λλ¬Έμ μ€ν¨νλ€.
POSIX.1-2001, POSIX.1-2008, 4.3BSD.
fdatasync()
κ° μ¬μ© κ°λ₯ν POSIX μμ€ν
μλ <unistd.h>
μ _POSIX_SYNCHRONIZED_IO
κ° 0λ³΄λ€ ν° κ°μΌλ‘ μ μλμ΄ μλ€. (sysconf(3)λ μ°Έκ³ .)
μ΄λ€ μ λμ€ μμ€ν
μμλ (리λ
μ€λ μλ) fd
κ° μ°κΈ° κ°λ₯ν νμΌ λμ€ν¬λ¦½ν°μ¬μΌ νλ€.
리λ
μ€ 2.2 λ° μ΄μ μμλ fdatasync()
κ° fsync()
μ λλ±νλ©°, κ·Έλμ μ±λ₯μμ μ 리ν μ μ΄ μλ€.
μ€λλ 컀λκ³Ό μ μ μ°λ νμΌ μμ€ν
μ fsync()
ꡬνμμλ λμ€ν¬ μΊμλ₯Ό νλ¬μ ν μ€ λͺ¨λ₯Έλ€. μ΄ κ²½μ° μμ ν λμμ 보μ₯νλ €λ©΄ hdparm(8)
μ΄λ sdparm(8)
μ μ΄μ©ν΄ λμ€ν¬ μΊμλ₯Ό λΉνμ±νν΄μΌ νλ€.
sync(1)
, bdflush(2), open(2), posix_fadvise(2), pwritev(2), sync(2), sync_file_range(2), fflush(3), fileno(3), hdparm(8)
, mount(8)
2019-03-06