On Fri, Feb 02 2007, David Chinner wrote: > On Thu, Feb 01, 2007 at 08:18:57PM +0100, Jens Axboe wrote: > > That down() probably wants a replug to precede it. Probably something > > like: > > > > if (atomic_read(&bp->b_io_remaining)) > > blk_replug_current_nested(); > > > > for xfs_buf_wait_unpin() and xfs_buf_lock(). Does this fix it? > > Jens, this patch looks like you originally removed the explicit > unplug calls that XFS used to prevent metadata I/O hangs and now you > are putting them back. Correct? > > Reading on from Andrew's earlier comments, shouldn't XFS have > worked unchanged? I'm just trying to understand why you removed > the explicit unplugs in the first place.....
It should, the problem is if someone has plugged higher up in the hierarchy, then you do need the explicit replug to drain that before going to sleep and waiting for IO to complete. Not very happy about that situation, I'd prefer if that happened automagically. I'll likely change the code to fix that, so we don't have to sprinkle blk_replug_current_nested() and always call io_schedule() instead of schedule(). It's just going to cause too many problems. -- Jens Axboe - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/