|To:||Christoph Hellwig <hch@xxxxxxxxxxxxx>|
|Subject:||Re: [PATCH] Prevent log tail pushing from blocking on buffer locks|
|From:||Lachlan McIlroy <lachlan@xxxxxxx>|
|Date:||Thu, 24 Jul 2008 15:47:52 +1000|
|Cc:||xfs-dev <xfs-dev@xxxxxxx>, xfs-oss <xfs@xxxxxxxxxxx>|
|User-agent:||Thunderbird 220.127.116.11 (X11/20080421)|
Christoph Hellwig wrote:
On Tue, Jul 22, 2008 at 04:32:27PM +1000, Lachlan McIlroy wrote:This changes xfs_inode_item_push() to use XFS_IFLUSH_ASYNC_NOBLOCK when flushing an inode so the flush wont block on inode cluster buffer lock. Also change the prototype of the IOP_PUSH operation so that xfsaild_push() can bump it's stuck count. This change was prompted by a deadlock that would only occur on a debug XFS where a thread creating an inode had the buffer locked and was trying to allocate space for the inode tracing facility. That recursed back into the filesystem to flush data which created a transaction and needed log space which wasn't available.The stuck propagation looks good, but I don't think this should be blindly done for all errors. The only error where it makes sense is the EAGAIN from xfs_iflush. All other returns inside the item_push handlers basically indicate filesystem corruption.
Good point. Regardless of the error it's still an item that could not be pushed and is effectively 'stuck'. What do you recommend I do for other errors? Shutdown the filesystem?
|<Prev in Thread]||Current Thread||[Next in Thread>|
|Previous by Date:||Re: [PATCH 0/5] more vnode related macro cleanups, Christoph Hellwig|
|Next by Date:||Re: [PATCH] Prevent log tail pushing from blocking on buffer locks, Christoph Hellwig|
|Previous by Thread:||Re: [PATCH] Prevent log tail pushing from blocking on buffer locks, Christoph Hellwig|
|Next by Thread:||Re: [PATCH] Prevent log tail pushing from blocking on buffer locks, Christoph Hellwig|
|Indexes:||[Date] [Thread] [Top] [All Lists]|