?? 日志系統.txt
字號:
any problems, send mails to sindybear@163.com
(1)整個文件系統只有一個journal,使用函數ext3_get_journal按照一定的inode號計算出來的inode。
(2)日志inode中的第一個塊,也就是0數據塊存儲日志的superblock。見journal_init_inode(journal.c)
***********************日志系統的啟動流程*********************************
ext3_read_super---->ext3_create_journal
ext3_get_journal----->journal_init_inode
journal_create(jouranl_load)---->journal_reset
journal_start_thread(啟動日志)
在啟動的過程中,有兩種情況,一種是第一次生成一個日志,使用journal_create,一種情況
是原來已經有日志了,這就使用journal_load把它從日志區中讀出來。
不管使用哪一種方法,都要調用journal_reset,也就是都要講日志區清空。從頭開始。
***************************************************************************
***********************日志的讀寫流程************************************
一個transaction的讀寫流程如下:
(1)
想磁盤上寫一個header,包含一定的magic,sequence-number。block-type設置為JFS_DESCRIPTOR_BLOCK
(2)
在這個header后面緊接的地方,范圍到這個設備塊的尾部,存放tag信息。
(3)
在這些信息的后面存放真正的meta-data信息。
(4)
在這個transaction全部提交完以后,結束的尾部,在寫一個512個字節,也就是一個扇區的數據,
其中僅僅包含一個header結構。其中sequece-number和前面的一樣.
block-type設置未JFS_COMMIT_BLOCK,標記具有同樣sequence-number的一個transaction結束。
這里要強調一點,為什么是一個扇區,是因為硬盤即使斷電,也可以保證最后一個整扇區的數據
被完全寫入。所以,不能超過一個扇區。
*************************************************************************
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -