Phoronix podał 29 października 2026 r., że zmianę w sterowniku FAT włączono do Linux 7.4 w tym samym tygodniu. Poprawka przygotowana przez Matheus Alves de Almeida grupuje przydzielanie klastrów w ścieżce FALLOC_FL_KEEP_SIZE. Opisane wyniki dotyczą konkretnego testu prealokacji miejsca na pliki.
Co zmienia patch w alokacji FAT32
FALLOC_FL_KEEP_SIZE pozwala zarezerwować miejsce na plik bez zmiany jego raportowanego rozmiaru. Klaster to jednostka, w której system plików przydziela miejsce na dane. Patch zmienia sposób wykonywania takiej rezerwacji w sterowniku FAT: zamiast wielokrotnie prosić o przydzielenie jednego klastra, przekazuje żądaną liczbę klastrów w jednym wywołaniu fat_add_clusters().
Ma to znaczenie dla operacji, które wcześniej wymagały wielu osobnych alokacji klastrów.
Jak zmienia się ścieżka alokacji FAT32
W starszym wariancie kodu kolejne wywołania fat_add_clusters() przydzielały po jednym klastrze. Patch zastępuje je pojedynczym wywołaniem, które otrzymuje żądaną liczbę klastrów.
Dwa wyniki z macierzy testów
Matheus Alves de Almeida podał czasy pętli wykonującej wywołania fallocate() z flagą FALLOC_FL_KEEP_SIZE. Testy przeprowadzono w QEMU/KVM, z urządzeniem virtio-blk i ustawieniem cache=none; podane czasy są średnimi arytmetycznymi z dziesięciu prób.
| Przypadek | Pliki i rozmiar każdego | Klastry FAT32 | Montowanie | Czas pętli przed zmianą (ms) | Czas pętli po zmianie (ms) | Próby |
| Test z montowaniem synchronicznym | 16 plików po 16 MiB | 4 096 B | Synchroniczne | 92 489 | 348 | 10 |
| Najniższy mnożnik wśród 12 przypadków | 128 plików po 16 KiB | 512 B | Niesynchroniczne | 1,287 | 0,241 | 10 |
W najniższym przypadku patch podaje poprawę 5,3×. Przy montowaniu synchronicznym wyniki były szczególnie duże, ponieważ nowy kod może grupować aktualizacje FAT zamiast obsługiwać synchronicznie przydzielenie każdego klastra osobno.
Co mierzył test prealokacji
Pętla wywoływała fallocate() osobno dla każdego pliku, rezerwując miejsce z flagą FALLOC_FL_KEEP_SIZE. Wyniki opisują więc czas tej operacji prealokacji, a nie szybkość zwykłego kopiowania plików ani transferu danych.