作者albertliao (~咖啡癮君子~)
看板LinuxDev
標題Re: [問題] 請教有關block IO讀寫的問題??
時間Mon Aug 9 21:24:35 2010
※ 引述《albertliao (~咖啡癮君子~)》之銘言:
: ※ 引述《albertliao (~咖啡癮君子~)》之銘言:
: : 大家好:
: : 小弟現在遇到的狀況是 , 當我在讀寫sd card的時候sc card拔出的時候
: : AP會被設為uninterrupt並且在vfs_write(file->f_op->write..)無法返回
: : 而且AP也不會到mmc_request至mmc/sd driver這一段 , 資料的傳輸是由一個
: : mmc_queue_thread做掉 , 所以不知道AP到底是被甚麼原因給block住 , 不曉得是否有
: : 大大了解vfs_write到mmc_request這一段AP到底去了哪裡 , 或是能給我一點意見
: : 感激不盡
: : PS:當我拔除sd card有出現end_request:I/O error
: : 但照理說應該會返回錯誤而且也不應該連ctrl+C也殺不掉
: 大家好,task被卡住的地方找到了, 是在page cache機制裡頭的__grab_cache_page中
: 的find_lock_page的__lock_page , task被卡在這且被設為uninterrupt , 請教有沒有
: 沒曉得mmc 的架構中哪幾個部分會涉及到sync_page的地方因為似乎是要有人去呼叫
: 這個函式才會被釋放出來(understanding the linux kernel P.639)
: 感謝
不好意思這樣寫或許太過攏統 , 在__lock_page之後會卡在io_schedule , 同時
mmc_queue_thread也會在__mmc_claim_host呼叫schedule被block住 , 看樣子是應該要
找到mmc core或是driver中呼叫wake up的地方 , 但並沒有看到,不知道大家是否有甚
麼建議給我 , driver是透過怎樣的方式輾轉呼叫到wake up???
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.82.245.8
推 askacis:沒看過mmc的東西,不過試試找找什麼request之類的結構變數 08/09 22:23
→ askacis:或是看看有沒有哪裡去做wake_up_process之類的~~ 08/09 22:23
推 guestl:you can try to call mmc_request_done 08/27 17:42