Langsung ke konten

Arsip

Filesystem

27 artikel
Rekayasa Perangkat Lunak 17 Sep 2026 3 min read

Cookie Rename inotify Mengorelasikan Event Move Tanpa Membuatnya Atomik

Sebuah rename() di Linux yang diamati melalui inotify dapat menghasilkan dua record dengan cookie nonzero yang sama: IN_MOVED_FROM untuk directory entry lama dan IN_MOVED_TO untuk entry baru. Cookie tersebut mengorelasikan kedua record, tetapi tidak mengubahnya menjadi satu item queue yang atomik. Batas ini penting bagi perangkat lunak yang memelihara indeks pathname, menyinkronkan state direktori, atau mengubah notifikasi filesystem menjadi record perubahan tingkat lebih tinggi. Rename merupakan satu operasi filesystem, sedangkan representasinya di inotify dapat berupa pasangan dengan properti pengelompokan delivery yang lebih lemah.

Teknologi 16 Sep 2026 4 min read

fsync pada File Tidak Memastikan Directory Entry Tersimpan Persisten

fsync() yang berhasil pada regular file tidak, dengan sendirinya, menjamin bahwa directory entry yang memberi nama pada file tersebut sudah mencapai persistent storage. Linux mendokumentasikan boundary ini secara eksplisit: sinkronisasi file mencakup data file dan metadata terkait, sedangkan persistence directory entry yang memuatnya membutuhkan fsync() pada file descriptor untuk direktori tersebut. Perbedaan ini penting ketika software membuat file baru atau mengganti pathname yang sudah ada secara atomik. Konten file dan metadata pathname adalah dua bagian filesystem state yang terpisah, dan crash dapat menguji durability boundary di antara keduanya.

Rekayasa Perangkat Lunak 16 Sep 2026 7 min read

File Descriptor Duplikat Berbagi Offset tetapi Tidak Descriptor Flag

Memanggil dup() tidak membuat posisi stream yang independen. Descriptor yang dikembalikan mengacu pada open file description yang sama dengan descriptor sumber, sehingga seek melalui salah satu descriptor mengubah offset yang terlihat melalui keduanya. Pada saat yang sama, state lokal descriptor seperti flag close-on-exec tetap melekat pada masing-masing descriptor secara terpisah. Pemisahan ini mudah terlewat karena kedua jenis state dimanipulasi melalui file descriptor berupa integer. Integer tersebut hanyalah referensi lokal milik proses. Beberapa descriptor dapat menunjuk ke satu open file description, dan objek bersama itulah yang membawa state yang memengaruhi read, write, seek, serta perubahan status flag.