Po ponad dwóch latach prac rozwojowych opublikowano wydanie projektu WinBtrfs 1.10, rozwijającego sterownik do korzystania z systemu plików Btrfs na platformie Windows. WinBtrfs nie opiera się na kodzie Btrfs z jądra Linux, lecz jest alternatywną implementacją stworzoną od podstaw. Obsługuje pracę z Windows XP i nowszymi wersjami. Sterownik jest dołączony do systemu operacyjnego ReactOS i może być używany do uruchamiania Windows z partycji Btrfs. Kod napisano w językach C/C++ i jest udostępniany na licencji LGPLv3.
WinBtrfs obsługuje większość funkcji wersji Btrfs dla Linuxa, w tym asynchroniczne odczyty i zapisy, użycie RAID0/1/10/5/6, buforowanie, automatyczne wykrywanie partycji, ACL, dowiązania symboliczne, poddziałki, migawki, dowiązania twarde, pliki oszczędzające przestrzeń, proaktywne alokowanie miejsca, kompresję, bilansowanie, sprawdzanie integralności danych, usuwanie i dodawanie nośników, przesyłanie i odbieranie poddziałek, zmianę rozmiaru partycji oraz rozszerzone sumy kontrolne (xhash, sha256, blake2). Specyficzne funkcje sterownika obejmują realizację alternatywnych strumieni danych oraz mapowanie identyfikatorów użytkowników z Linuxa i Windows. Możliwa jest konwersja istniejących partycji NTFS na Btrfs.
Wśród zmian w nowej wersji:
- Dodano obsługę zapisu bitmap z informacjami o wolnym miejscu.
- Zrealizowano możliwość przechowywania małych plików w blokach metadanych (inline) w formie skompresowanej.
- Udoskonalono działanie z wymiennymi nośnikami. Zakończono wsparcie dla tworzenia macierzy RAID na wymiennych nośnikach.
- Zwiększono niezawodność odzyskiwania po błędach spowodowanych brakiem pamięci RAM (OOM) lub wyczerpaniem wolnego miejsca na nośniku (ENOSPC).
- Wyeliminowano awaryjne zakończenia, które występowały podczas przenoszenia plików pomiędzy poddziałkami i podczas jednoczesnego tworzenia dużej liczby plików.
- Usunięto błąd, który prowadził do uszkodzenia drzewa ekstentów podczas zapisywania migawek.
- Naprawiono zakleszczenie przy pracy z dowiązaniami twardymi.
- Przeprowadzono refaktoryzację wewnętrznych struktur i stałych, aby przybliżyć je do wariantów stosowanych w Linuxie.
- Podczas przeglądania zmian i analizy błędów zaangażowano asystenta AI Claude, ale kod, jak dotąd, tworzy się wyłącznie ręcznie.
Źródło: opennet.ru
