Ted ts'o, pengarang sistem fail ext2 / ext3 / ext4, menerima cawangan Linux-seterusnya, mengenai pangkalan dari mana pelepasan Linux Kernel 5.2 akan dibuat, satu set perubahan yang laksanakan sokongan perenggan operasi kes bebas di sistem fail Ext4.
Tampalannya mereka juga menambah sokongan untuk watak UTF-8 dalam nama fail. Modus operasi huruf bukan watak disertakan dalam pautan untuk memisahkan direktori menggunakan atribut baru "+ F" (EXT4_CASEFOLD_FL).
Tidak peka huruf besar bagi ext4
Apabila atribut ini dipasang di direktori, semua operasi dengan fail dan subdirektori yang ada di dalam dirinya tidak peka dengan kes, termasuk kes akan diabaikan semasa mencari dan membuka fail (contohnya Test.txt, test.txt dan test.TXT dalam direktori yang serupa) akan dianggap sama).
Artinya, ia sepadan dengan entri direktori, walaupun nama yang digunakan oleh ruang pengguna bukanlah bait untuk bait yang sepadan dengan nama cakera, tetapi merupakan versi setara huruf kecil yang sensitif dengan huruf kecil.
Operasi ini dipanggil pencarian nama fail tanpa huruf besar-kecil. Ciri ini dikonfigurasikan sebagai atribut inode yang digunakan untuk direktori dan diwarisi oleh anak-anak mereka.
Atribut ini sahaja boleh diaktifkan pada direktori kosongs untuk sistem fail yang menyokong fungsi pengekodan, dengan itu mengelakkan perlanggaran nama fail yang hanya berbeza mengikut kesnya.
Secara lalai, dengan pengecualian direktori dengan atribut "+ F", sistem fail masih peka huruf besar kecil. Untuk mengawal kemasukan mod tidak sensitif huruf, satu set utiliti e2fsprogs yang telah diubah suai disediakan.
Patch ini menerapkan sokongan sebenar untuk pencarian nama fail yang tidak peka huruf besar dalam ext4, berdasarkan bit ciri dan pengekodan yang tersimpan di superblok.
Pekerjaan yang memerlukan masa yang lama untuk sampai
Tampalan tersebut disiapkan oleh Gabriel Krisman Bertazi, penyumbang Collabora dan diambil dari percubaan ketujuh setelah tiga tahun pengembangan dan penghapusan komen.
Pelaksanaannya tidak membuat perubahan pada format penyimpanan cakera dan berfungsi secara eksklusif pada tahap mengubah logik perbandingan nama dalam fungsi ext4_lookup () dan menggantikan hash dalam struktur dcache (Direktori Nama Pencarian Cache).
Nilai atribut "+ F" disimpan dalam inode setiap direktori dan digunakan untuk semua fail dan subdirektori yang dilampirkan. Maklumat pengekodan disimpan dalam superblok.
Buat masa ini, pencarian negatif tidak dimasukkan ke dalam cache, kerana mereka tetap akan dibatalkan, kerana kami tidak dapat mempercayai fail yang hilang.
Ini tidak baik untuk prestasi, tetapi memerlukan beberapa memanfaatkan lapisan vfs untuk membetulkannya.
Kita boleh hidup tanpanya buat masa ini, seperti orang lain.
Untuk mengelakkan perlanggaran dengan nama fail yang ada, atribut "+ F" hanya dapat ditetapkan pada direktori kosong dalam sistem fail, di mana mod sokongan Unicode dalam nama fail dan direktori diaktifkan semasa fasa pemasangan.
Nama-nama elemen direktori di mana atribut "+ F" diaktifkan secara automatik diterjemahkan ke huruf kecil dan dicerminkan dengan cara ini dalam dcache, tetapi disimpan dalam cakera dalam bentuk yang awalnya ditentukan oleh pengguna.
Hash cakera baru dikira sebagai hash keseluruhan rantai kes, dan bukannya rantai langsung.
Iaitu, walaupun memproses nama tanpa mengira kes, nama-nama tersebut dipaparkan dan disimpan tanpa kehilangan maklumat mengenai kes watak (tetapi sistem tidak akan membenarkan anda membuat nama fail dengan watak yang sama, tetapi dalam kes yang berbeza).
Ia juga membolehkan kod VFS dengan cepat mencari entri yang betul dalam cache walaupun rentetan yang setara telah digunakan dalam carian sebelumnya