[Top] [All Lists]

Re: [PATCH] Prevent log tail pushing from blocking on buffer locks

To: Lachlan McIlroy <lachlan@xxxxxxx>
Subject: Re: [PATCH] Prevent log tail pushing from blocking on buffer locks
From: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Wed, 23 Jul 2008 07:21:55 -0400
Cc: xfs-dev <xfs-dev@xxxxxxx>, xfs-oss <xfs@xxxxxxxxxxx>
In-reply-to: <48857EFB.3030301@xxxxxxx>
References: <48857EFB.3030301@xxxxxxx>
Sender: xfs-bounce@xxxxxxxxxxx
User-agent: Mutt/1.5.18 (2008-05-17)
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.

<Prev in Thread] Current Thread [Next in Thread>