मैं एक btrfs फाइलसिस्टम पर एक फ़ोल्डर के साथ यह समस्या थी। माउंट पॉइंट्स और lsof की जाँच करना सामान्य चीजें हैं। मेरे मामले में यह एक पुराने बग के कारण हुआ भ्रष्टाचार था, क्योंकि यह तय था:
सामान्य चीजों के लिए जाँच करें:
- lsof + D <पाथ> - यह l i s t o o pen f iles होगा। आप एक फ़ोल्डर को नहीं हटा सकते हैं जिसमें खुली फाइलें हैं, हालांकि यह सामान्य रूप से थोड़ी अलग त्रुटि देगा: "डिवाइस या संसाधन व्यस्त"। ध्यान दें कि यदि आप "+ D <पथ>" छोड़ते हैं, तो lsof सभी फाइल सिस्टम पर सभी फ़ोल्डरों के लिए एक सूची दिखाएगा - जो समय बर्बाद करेगा। ;)
- माउंट : यह आपको वर्तमान में माउंट किए गए फ़ाइल सिस्टम दिखाएगा। आप सक्रिय रूप से माउंट किए गए माउंटपॉइंट या उसके मूल फ़ोल्डर को हटा नहीं सकते।
- btrfs उप सूची <path> : एक माउंट बिंदु के समान, आप btrfs- विशिष्ट कमांड का उपयोग करके btrfs सबवोल्यूम को हटा नहीं सकते: btrfs सबवोल्यूम हटाएं <पथ> ।
भ्रष्टाचार का हल
भ्रष्टाचार के मामले में जहां इसे आसानी से तय नहीं किया जा सकता है, मूल वर्कअराउंड बैक अप करने के लिए है, फाइल सिस्टम को प्रारूपित करें, और फिर पुनर्स्थापित करें (खराब डेटा को छोड़कर)। फाइलसिस्टम में आपके पास कितना डेटा है, इसके आधार पर यह एक काम हो सकता है। : - /
मेरे मामले में समस्या फ़ोल्डर एक सबवोल्यूम के अंदर था, इसलिए मैं ऊपर करने में सक्षम था, लेकिन पूरे फाइल सिस्टम के बजाय केवल सबवोल्यूम हटाकर। मैंने अपने डेटा का बैकअप लिया और सबवोल्यूम को हटा दिया: btrfs उप डेल <सबवॉल्म-पथ> । मैं तब समस्या फ़ोल्डर से बाहर निकलकर एक नए सबवोल्यूम में पुनर्स्थापित करने में सक्षम था।
I_size का भ्रष्टाचार
मेरे मामले में कारण i_size का भ्रष्टाचार पाया गया , जहां यह गैर-शून्य था। Btrfs यह बताने के लिए i_size का उपयोग करता है कि फ़ोल्डर खाली है या नहीं। इस पर जाँच करने के लिए, चलाएँ:
stat -c %s <foldername>
Btrfs में एक खाली फ़ोल्डर का i_size शून्य होना चाहिए। आमतौर पर यह 4k है।
सम्बंधित लिंक्स:
https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_cannot_delete_an_empty_directory
rm -r
टर्मिनल से आउटपुट क्या है ? क्या आपने इस पोस्ट के जवाबों के साथ कोशिश की है ?