Messages in this thread | ![/](/images/icornerl.gif) | | Date | Thu, 28 Dec 2006 09:15:39 -0800 (PST) | From | Linus Torvalds <> | Subject | Re: [PATCH] mm: fix page_mkclean_one |
| |
On Thu, 28 Dec 2006, Zhang, Yanmin wrote: > > The test program is a process to write/read data. pdflush might write data > to disk asynchronously. After pdflush writes a page to disk, it will call (either by > softirq) clear_page_dirty to clear the dirty bit after getting the interrupt > notification.
That would indeed be a horrible bug. However, we don't do "clear_page_dirty()" _after_ the IO has completed, we do it _before_ the IO starts.
If you can actually find a place that does clear_page_dirty _after_ IO, then yes, you've just found the bug. But I haven't found it.
So the rule is _always_:
- call "clear_page_dirty_for_io()" with the page lock held, and _before_ the IO starts. - do "set_page_writeback()" before unlocking the page again - do a "end_page_writeback()" when the IO actually finishes.
and any code sequence that doesn't honor those rules would be buggy. A beer for anybody that finds it..
Linus - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| ![\](/images/icornerr.gif) |