Journal Ext3 Notes
1. target
The goal of a journaling filesystem is to avoid running time-consuming consistency checks on the whole filesystem -->所以,關心的是consistency of fs,not ensure all data blocks are correct.
所以三種 journal mode:
journal: start --> (data + mentadata)-->stop
ordered: start -->data --> (mentata) -->stop
write-back: start --> ... ->(mentadata) -->stop
() means JOURNAL routine,if it is corrupted, the transaction failed. 所以,上面的并不能保証data blocks vcorrect.
2. log-record/handle/transaction
事務是一個上層的抽象操作概念。
handle視為原子的屬于進程的操作集。
log-record針對block單元操作。
對journal的操作是由數個transactions來完成的。
journal是從super block裏的sbi獲取的。故一個fs有一個journal-t,裏面有謻類型的事務.
3. How Journaling Works
以write system call為例
Start point:
fs/read_write.c,,,
不熟悉vfs-->generic-->fs層的一些操作邏輯,所以從write系統調用開始看,直到ext3相應的inode的mapping裏的准備工作。ex:write_begin,它應該把task mm相應從user copy來的datas寫到file相應的address_space裏面去,page-cache的內容再回寫到journal區,此時,已經開始了journal_start的記錄工作。
這部分code 與ulk的描述不一樣。
write-begin() ---> copy_from_user --> flush pages to journal-->write_end. 每一個 call ext3 specific fucntions...
先看完了 18.7,ext3 journal part.
對著code簡單看了下write系統調用 ,在ext3的write-begin/end的時候journal的jbd作用。具體的內容,後面再回來看。
阅读(1030) | 评论(0) | 转发(0) |