Ben btrfs dosya sistemindeki bir klasör ile bu sorunu vardı. Montaj noktalarının ve lsof'un kontrol edilmesi normal şeylerdir. Benim durumumda, eski bir hatanın yol açtığı yolsuzluktu, çünkü düzeltildi:
Kontrol edilecek normal şeyler:
- lsof + D <yol> - Bu olacak l ı s tüm T O kalem f iles. Açık dosyaları içeren bir klasörü silemezsiniz, ancak bu normalde biraz farklı bir hata verir: "Aygıt veya kaynak meşgul". "+ D <yol>" 'un dışında kalırsanız, lsof'un tüm dosya sistemlerindeki tüm klasörler için bir liste göstereceğini ve bu da zaman kaybına neden olacağını unutmayın. ;)
- mount : Bu size şu anda bağlı olan dosya sistemlerini gösterir. Aktif olarak monte edilmiş bir bağlama noktasını veya üst klasörlerini silemezsiniz.
- btrfs alt listesi <yol> : Bir bağlama noktasına benzer şekilde, btrfs'e özgü komutu kullanmadan btrfs alt birimini silemezsiniz : btrfs subvolume delete <yol> .
Yolsuzluk Geçici Çözümü
Kolayca düzeltilemediği bir bozulma durumunda, temel geçici çözüm yedekleme, dosya sistemini biçimlendirme ve ardından geri yükleme (kötü verileri dışarıda bırakma) şeklindedir. Dosya sisteminde ne kadar verinin bulunduğuna bağlı olarak, bu bir angarya olabilir. : - /
Benim durumumda sorun klasörü bir alt hacim içinde olduğunu, bu yüzden yukarıdakileri yapabildim ama tüm dosya sistemi yerine sadece alt birimi silerek. Verilerimi yedekledim ve alt hacimi sildim: btrfs sub del <subvolume-path> . Sonra sorun klasörü dışarı bırakarak, yeni bir alt hacme geri yükleyebilirsiniz.
İ_size bozulması
Benim durumumdaki nedeni, sıfır olmayan i_size'nin bozulması olarak bulundu . Btrfs, klasörün boş olup olmadığını söylemek için i_size öğesini kullanır. Bunu kontrol etmek için şunu çalıştırın:
stat -c %s <foldername>
Btrfs'deki boş bir klasörün i_size değeri sıfır olmalıdır. Dahili olarak genellikle 4k'dir.
İlgili Bağlantılar:
https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_cannot_delete_an_empty_directory
rm -r
terminalden çıkışı nedir? Eğer cevapları ile denediniz Bu yazı ?