Chinaunix首页 | 论坛 | 博客
  • 博客访问: 333070
  • 博文数量: 102
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 1146
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-21 22:33
文章分类

全部博文(102)

文章存档

2011年(8)

2010年(94)

我的朋友

分类: LINUX

2010-01-21 23:30:05

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作用。具體的內容,後面再回來看。
阅读(1019) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~