KDE, USB belleklere dosya kopyalama işlemlerinin tamamlandığını yanlış bildiren 15 yıllık hatayı gideriyor. KDE Frameworks 6.32 ile gelecek düzeltme sayesinde dosya aktarım penceresi, veriler gerçekten depolama aygıtına yazıldığında işlemin tamamlandığını bildirecek.
15 Yıllık Hata Nasıl Çalışıyordu?
2011 yılında KDE’nin hata takip sisteminde açılan bir rapor, çıkarılabilir depolama aygıtlarına dosya kopyalanırken gösterilen ilerleme çubuğu ve tamamlanma bildirimlerinin gerçeği yansıtmadığını ortaya koydu. Sorunun temelinde, dosyaların USB belleğe gerçekten yazılması yerine önce sistemin yerel önbelleğine kopyalanmasının, işlemin tamamlanmış gibi gösterilmesi yatıyordu.
Bu nedenle KDE masaüstü ortamı, dosyalar henüz USB belleğe tamamen aktarılmamış olsa bile kopyalama işleminin bittiğini bildirebiliyordu. Özellikle dosyaları taşıma işlemiyle aktaran kullanıcılar açısından bu durum risk oluşturuyordu. Çünkü kaynak dosyalar silinirken kopyalanan veriler hâlâ bellekteki önbellekte bulunabiliyordu. Yıllar içinde hata raporuna 77’den fazla yorum eklendi ve aynı sorun için 17’den fazla bildirim açıldı. Buna rağmen hata, KDE Plasma’nın kararlı sürümlerinde uzun süre varlığını korudu.
KDE Frameworks 6.32 ile Bildirimler Doğru Çalışacak
KDE geliştiricisi Méven Car, yayınladığı blog yazısında sorunun giderilmesi için yürütülen uzun çalışmayı anlattı. Aslında çözüm için gerekli araçlardan biri, hata raporunun açılmasından yalnızca iki gün sonra gündeme gelmişti. Linux’ta bulunan sync_file_range() işlevi, verilerin depolama aygıtına yazılması sürecini takip etmek için kullanılabiliyor. Fakat bu işlevin doğru şekilde uygulanması beklenenden daha karmaşık oldu.
2021 yılında geliştirici Nate Graham, kaynak dosyaların kopyalama işlemi tamamlanmadan silinebilmesi nedeniyle hatanın önceliğini yükseltti. Bir yıl sonra KDE’nin Diskler ve Aygıtlar bileşeninde değişiklik yapılarak, çıkarılabilir bir aygıtın güvenle çıkarılmaya çalışıldığı sırada yazma işlemi devam ediyorsa kullanıcıya bilgi verilmesi sağlandı.
2024 yılında ise Linux 6.5 ile sunulan cachestat() işlevi değerlendirildi. Bu yöntem, dosyaların ne kadar verisinin hâlâ önbellekte bulunduğunu gösterebilse de aynı anda yalnızca tek bir dosya üzerinde çalışması nedeniyle yeterli olmadı.
Méven Car, sync_file_range() tabanlı çözümü daha önce iki kez uygulamaya çalıştığını ancak doğru sonucu elde edemediğini belirtti. Son denemelerde yazma işleminin hangi bölümünün bekleneceğiyle ilgili bir hata bulundu. Verinin henüz yazılmaya başlanmamış bölümünün tamamlanmasını beklemek, işlemin doğru şekilde çalışmasını engelliyordu.
Sorun, KDE Frameworks 6.32 sürümünde sync_file_range() işlevinin doğru biçimde kullanılmasıyla çözülecek. Böylece dosya kopyalama penceresi, veriler yalnızca yerel önbelleğe alındığında değil; USB depolama aygıtına yazılma işlemi tamamlandığında işlemin bittiğini bildirecek.
Bu değişiklik, özellikle büyük dosyaları taşınabilir depolama aygıtlarına kopyalayan ve ardından aygıtı hemen çıkarmak isteyen kullanıcılar için önem taşıyor. Yeni davranış, kopyalama işleminin tamamlandığına ilişkin daha güvenilir bilgi sunarak verilerin henüz yazılmamış olması nedeniyle oluşabilecek sorunların önüne geçmeyi amaçlıyor.
Kaynak: phoronix.com
