| To: | David Chinner <dgc@xxxxxxx> |
|---|---|
| Subject: | Re: review: use correct buffer flags when reading superblock |
| From: | Christoph Hellwig <hch@xxxxxxxxxxxxx> |
| Date: | Thu, 18 Oct 2007 16:46:49 +0100 |
| Cc: | Christoph Hellwig <hch@xxxxxxxxxxxxx>, Lachlan McIlroy <lachlan@xxxxxxx>, xfs-dev <xfs-dev@xxxxxxx>, xfs-oss <xfs@xxxxxxxxxxx> |
| In-reply-to: | <20071010112505.GH23367404@sgi.com> |
| References: | <470C8F5B.90705@sgi.com> <20071010093451.GA7655@infradead.org> <20071010112505.GH23367404@sgi.com> |
| Sender: | xfs-bounce@xxxxxxxxxxx |
| User-agent: | Mutt/1.4.2.3i |
On Wed, Oct 10, 2007 at 09:25:06PM +1000, David Chinner wrote: > > Where are these set up in the first time? AFAICS the buffer only written > > out by xfs_unmountfs_writesb, xfs_syncsub and xfs_trans_log_buf, and all > > these should only ever happen after log recovery has finished. > > It can also be written by xfsbufd when it has been bdwrite() > or as a result of log tail pushing. Hmm, true. > Because the superblock buffer is XBF_FS_MANAGED, it does not get > torn down when it is clean and has no references, so the XBF_ASYNC > flag never gets cleared unless the fs specifically clears it. If the > superblock is then not recovered out of any further transactions > during recovery after xfsbufd flushed it, the XBF_ASYNC flag remains > set for the re-read that is issued in xlog_do_recover() and we > hang..... Makes sense as an explanation. I still don't really like patch, maybe we should always clear the ASYNC flag in the b_iodone callback? |
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: can't remove dir, Louis-David Mitterrand |
|---|---|
| Next by Date: | Re: Review: Fix dbflush panic in xfs_qm_sync, Christoph Hellwig |
| Previous by Thread: | Re: review: use correct buffer flags when reading superblock, David Chinner |
| Next by Thread: | Re: review: use correct buffer flags when reading superblock, Lachlan McIlroy |
| Indexes: | [Date] [Thread] [Top] [All Lists] |