sistem file case-insensitive memungkinkan kami untuk menyelesaikan kemacetan penting untuk aplikasi yang di-porting dari sistem operasi lain
tidak menyentuh hati saya dan saya tidak dapat memahami bagaimana proses normalisasi dan pelipatan kasus memungkinkan kami untuk mengoptimalkan penyimpanan disk kami.
Wine, Samba, dan Android memiliki untuk menyediakan semantik sistem file case-insensitive. Jika sistem file yang mendasari peka huruf besar kecil, setiap kali pencarian peka huruf besar kecil gagal, Wine et al. harus memindai setiap direktori untuk membuktikan tidak ada kecocokan case-insensitive (misalnya jika mencari /foo/bar/readme.txt
gagal, Anda harus melakukan daftar direktori lengkap dan perbandingan lipatan semua file di foo/bar/*
dan semua direktori di foo/*
, dan /*
).
Ada beberapa masalah dengan ini:
- Ini bisa menjadi sangat lambat dengan jalur bersarang yang sangat dalam (yang dapat menghasilkan ratusan panggilan FS) atau direktori dengan puluhan ribu file (yaitu menyimpan cadangan inkremental melalui SMB).
- Pemeriksaan ini memperkenalkan kondisi balapan.
- Pada dasarnya tidak sehat:jika keduanya
readme.txt
danREADME.txt
ada tetapi aplikasi memintaREADME.TXT
, file mana yang dikembalikan tidak ditentukan.
Android melangkah lebih jauh dengan meniru ketidakpekaan huruf besar-kecil menggunakan FUSE/wrapfs dan kemudian SDCardFS dalam kernel. Namun, SDCardFS membuat segalanya lebih cepat dengan memindahkan proses ke ruang kenel†. Itu masih harus menjalankan sistem file (dan dengan demikian IO terikat), memperkenalkan kondisi balapan, dan pada dasarnya tidak sehat. Oleh karena itu mengapa Google mendanai† pengembangan ketidakpekaan huruf per direktori asli di F2FS dan sejak itu SDCardFS tidak digunakan lagi.
Ada beberapa upaya di masa lalu untuk mengaktifkan pencarian case-insensitive melalui VFS. Upaya terbaru pada tahun 2018 memungkinkan pemasangan tampilan sistem file yang tidak peka terhadap huruf besar-kecil. Ted Tso secara khusus mengutip masalah wrapfs untuk menambahkan fungsi ini, karena setidaknya akan lebih cepat dan (saya yakin) bebas dari kondisi balapan. Namun, masih tidak sehat (meminta README.TXT
dapat mengembalikan readme.txt
atau README.txt
). Ini ditolak karena hanya menambahkan dukungan per-direktori untuk ketidakpekaan huruf besar-kecil dan kecil kemungkinannya untuk membuatnya menjadi VFS††.
Selain itu, pengguna mengharapkan case-insensitivity sehingga setiap sistem operasi berorientasi konsumen harus menyediakannya. Unix tidak dapat mendukungnya secara asli karena Unicode tidak ada dan string hanyalah sekumpulan byte. Ada banyak kritik yang valid tentang bagaimana pelipatan kasus ditangani di masa lalu, tetapi Unicode menyediakan fungsi pelipatan kasus yang tidak dapat diubah yang berfungsi untuk semua kecuali satu lokal (Turki, dan bahkan itu hanya dua titik kode). Dan b-tree sistem file adalah satu-satunya tempat yang masuk akal untuk mengimplementasikan perilaku ini.
†AFAICT
††Saya mengirim email ke Krisman, penulis pencarian case-insensitive berbasis VFS dan dukungan case-insensitive per direktori di EXT4 dan F2FS.
Sistem operasi lain memiliki sistem file case-sensitive.
Sebagai contoh:MacOS mengizinkan case-insensitive (sebagai default) atau case-sensitive. Adobe Photoshop dan Adobe Lightroom tidak bekerja dengan baik dengan sistem file case-sensitive. Ini berarti bahwa dalam program Adobe, mungkin ada jalur hardcode, ditulis dengan cara yang berbeda (mungkin "Dokumen" dan "dokumen" di perpustakaan yang berbeda, atau kadang-kadang beberapa filter diterapkan (misalnya huruf kecil dan menghapus spasi, yang mungkin berbeda dari jalur data). Tidak ada yang peduli, karena itu hanya berfungsi.
Jadi, jika sekarang Anda ingin mem-porting program yang dibuat untuk beberapa sistem operasi berpemilik umum di zaman kita, Anda harus memperbaiki semua jalur, sehingga Anda selalu menggunakan kasus nama file secara konsisten, atau Anda lebih suka memiliki sistem file yang menangani ini. untukmu.
Adobe tidak dapat melakukannya untuk MacOS, jadi perkirakan hal-hal yang jauh lebih sulit (dan mahal) untuk vendor lain. Lihat https://helpx.adobe.com/creative-suite/kb/error-case-sensitive-drives-supported.html