לדלג לתוכן

פתרון מערכת קבצים במרחב משתמש

לכל קובץ נוסף נבחר inode שונה ונשמור מיפוי עקבי בין שם, attributes ותוכן. אפשר לרכז את המידע בפונקציה שמחזירה תוכן לפי inode, כדי שהגודל המדווח וגבולות הקריאה ייגזרו מאותו מקור.

fn content(ino: u64) -> Option<&'static [u8]> {
    match ino {
        2 => Some(b"hello from userspace\n"),
        3 => Some(b"second file\n"),
        _ => None,
    }
}

הפונקציה מצטרפת למימוש ההרצאה, ומחליפה את הגישה לקבוע יחיד ב־attribute וב־read. הקוד עדיין צריך לבדוק offset שלילי ולתחום את האורך לפני יצירת הפרוסה. רשימת הספרייה תוסיף רשומה עם inode 3, ו־lookup יפתור רק את השם שהוגדר עבורה.

כשל daemon בודק איך הקרנל והלקוחות מגיבים לאובדן הספק. הוא אינו מוכיח מה ישרוד אחרי אובדן מטמון של מערכת ההפעלה, ובדוגמה שלנו אין בכלל backend עמיד. לכן אין משמעות לטענת durability על סמך הצלחת ההרצה הזאת בלבד.