David Chinner wrote: > On Thu, Oct 11, 2007 at 12:42:25PM +1000, Lachlan McIlroy wrote: >> David Chinner wrote: >>> On Wed, Oct 10, 2007 at 06:37:47PM +1000, Lachlan McIlroy wrote: >>>> When reading the superblock during log recovery we are not setting >>>> the correct buffer flags. Specifically we are not turning off flags >>>> we do not need such as XBF_ASYNC that is causing the synchronous >>>> xfs_iowait() to hang. We should also turn off XBF_WRITE and remove >>>> the buffer from the delay write queue just to be safe. >>> We really don't need the removal of the write flags - the XFS_bflush() >>> call above the xfs_getsb() call guarantees that they won't be set.... >> It's not obvious though. It wasn't obvious that ASYNC was still set >> and look where that got us. > > Sure, but it is incorrect to have them set at that point - incorrect > enough that it might cause corruption. That is, if they are set > then the changes made during log replay have not been written to > disk and we've got bigger problems than a hanging I/O to worry > about.... > > So rather than clearing them, we should be asserting that the > write flags are not set at all. > New patch attached.