LinuxDev 板


LINE

恩,老師要求做一個ext2 fs的修改版,具體要求是modify the ext2 fs to include c hecksuming on a per block basis,就是說對于文件系統的每個指針,都增加一個chec ksum域。在寫一個block的時候,同時計算其checksum并寫入,在讀一個block的時候, 計算其checksum并與預存的checksum比較,如不符合即報錯。 可憐我以前從沒碰過linux內核的代碼,看到一堆函數指來指去調來調去腦袋都大了... 所以做到一半實在做不下去了,上來求教一個方向... 我現在已經做了的:在inode以及indirect block里添加存儲checksum的域(我把它放在 每個指針的后面,占用一個__le32的空間。現在看來并不是很好的實現,不過what's d one is done…),并修改ext2 fs里順序查找block的方式(ext2_get_branch, ext2_al loc_branch, ext2_splice_branch等等函數)。這部分已經編譯通過,好像沒啥大問題 。。。 我現在需要做的:修改ext2的read,write函數,以實現讀時比較checksum,寫時寫入c hecksum的功能。 我的問題是,應該是在哪里修改呢? 我目前有兩個選擇:一個是在從page cache讀或寫文件的時候實現checksuming,也就是 說,修改file->f_op->aio_read, file->f_op->aio_write(這里其實應該是 address_ space->a_ops->write_end()才對),等等。這個的好處在于,實現起來比較簡單。比較 容易由要讀要寫的file range推出要讀/寫的block在文件中的邏輯編號(其實也還是挺 麻煩,因為這里傳遞的參數是iocb或者直接就是mapping之類的,還需要我自己遍歷這個 address space里所有的page,get buffer才能得到其在文件中的相對positon?)。其壞 處,一是每讀/寫一次page cache就需要計算checksum一次,開銷太大;二是讀寫文件的 地方實在是太分散了….有普通文件的aio_read/write, 有nobh的read,write,有mappin g, 有direct I/0, 還有目錄,符號鏈接的讀寫。。。我實在沒有這個勇氣和信心把它們 一一找出來,修改對…… 另一個選擇就是在從硬盤中讀/把寫commit到硬盤的時候再進行checksuming。這個的好 處是比較明顯了,但是壞處也有。其一,這個讀寫硬盤的操作好像也挺分散的…..我目 前研究代碼的結果是普通文件的寫以及后臺的把page cache刷到硬盤的操作好像都調用 到ext2_writepage了….(ext2_writepages會調用__mpage_writepage, 而__mpage_writ epage在該文件是ext2文件的情況下,是會調用ext2_writepage,而不是直接submit bio ,是吧?)但是nobh的,direct I/0的等等,是不是最終都會調用到ext2_writepage還 不清楚…….求高人指點…. 其二,如此底層的函數有的時候參數只有一個bio….從這里 出發得到讀寫內容在文件中的相對位置以確定把checksum往哪里寫太不直接…..最后是 好像有的文件操作直接調用的是ll_rw_block????(比如說simple_fsync) 根本就跳過了 ext2_fs嘛! 這個叫我怎么辦? 恩,問題很多,請大家不吝指點:) p.s 話說generic_file_sync,先調了write_and_wait_range刷新,然后調simple_fsync 刷新,然后再調sync_inode刷新….請問有什么必要如此冗余呢? --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 128.141.48.32
1F:→ abadcafe:照我的理解,修改ext2_writepage應該是沒錯的。 08/19 13:02







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP