seqcountが preempt_disableしてない件について というエントリで、seqcountってプリエンプションをなーんも考えてないんだけど、呼び出し側のi_size_write() もなーんも考えてないように見える。これって大丈夫なの?

という疑問を問いかけたら、ひらさんから、i_semを忘れてる。とご指摘をいただいた。
なるほど。おっしゃる通りである。

とゆーわけで安心しつつも、いつおうkernel2.6.17で確認をいれてみる。



・・・・




・・・・・・・・・・・






・・・・・・・・・・・・・・・・・・・






i_sem がそもそも消えていますがなにか?



いや、かわりに i_mutex が追加されていて、
セマフォじゃなくてミューテックスで保護してるので、排他自体はしてるだが、ミューテックスって誰かとバッティングしないかぎり

atomic_xchg();
smp_mb();

の2行で抜けてくるので、プリエンプションはdisableされてないっぽげ。

なので、やっぱりワーストケースでは、i_size_write中にプリエンプションされてi_size_readがえらい待たされるケースがありそうな気がするでゴワスよ。


今のところの結論。
前回の指摘の1は、やっぱり疑わしい。
2と3は脳みそが腐っていたっぽげ。


しかし、つくづく記事にミスが多いブログだこと(^^ゞ


Dont worry
細かい事は気にしない! ランキング!