Re: 2.6.20-rc6-mm3

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Jens Axboe
Date: Thursday, February 1, 2007 - 12:18 pm

On Thu, Feb 01 2007, Christoph Lameter 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?

diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c
index f2bdf8b..1ef226e 100644
--- a/fs/xfs/linux-2.6/xfs_buf.c
+++ b/fs/xfs/linux-2.6/xfs_buf.c
@@ -909,6 +909,8 @@ xfs_buf_lock(
 	xfs_buf_t		*bp)
 {
 	XB_TRACE(bp, "lock", 0);
+	if (atomic_read(&bp->b_io_remaining))
+		blk_replug_current_nested();
 	down(&bp->b_sema);
 	XB_SET_OWNER(bp);
 	XB_TRACE(bp, "locked", 0);
@@ -979,7 +981,7 @@ xfs_buf_wait_unpin(
 		set_current_state(TASK_UNINTERRUPTIBLE);
 		if (atomic_read(&bp->b_pin_count) == 0)
 			break;
-		schedule();
+		io_schedule();
 	}
 	remove_wait_queue(&bp->b_waiters, &wait);
 	set_current_state(TASK_RUNNING);
@@ -1291,6 +1293,8 @@ xfs_buf_iowait(
 	xfs_buf_t		*bp)
 {
 	XB_TRACE(bp, "iowait", 0);
+	if (atomic_read(&bp->b_io_remaining))
+		blk_replug_current_nested();
 	down(&bp->b_iodonesema);
 	XB_TRACE(bp, "iowaited", (long)bp->b_error);
 	return bp->b_error;
@@ -1682,6 +1686,7 @@ xfsbufd(
 	xfs_buf_t		*bp, *n;
 	struct list_head	*dwq = &target->bt_delwrite_queue;
 	spinlock_t		*dwlk = &target->bt_delwrite_lock;
+	int			count;
 
 	current->flags |= PF_MEMALLOC;
 
@@ -1697,6 +1702,7 @@ xfsbufd(
 		schedule_timeout_interruptible(
 			xfs_buf_timer_centisecs * msecs_to_jiffies(10));
 
+		count = 0;
 		age = xfs_buf_age_centisecs * msecs_to_jiffies(10);
 		spin_lock(dwlk);
 		list_for_each_entry_safe(bp, n, dwq, b_list) {
@@ -1716,6 +1722,7 @@ xfsbufd(
 						 _XBF_RUN_QUEUES);
 				bp->b_flags |= XBF_WRITE;
 				list_move_tail(&bp->b_list, &tmp);
+				count++;
 			}
 		}
 		spin_unlock(dwlk);
@@ -1730,6 +1737,8 @@ xfsbufd(
 
 		if (as_list_len > 0)
 			purge_addresses();
+		if (count)
+			blk_replug_current_nested();
 
 		clear_bit(XBT_FORCE_FLUSH, &target->bt_flags);
 	} while (!kthread_should_stop());
@@ -1786,6 +1795,9 @@ xfs_flush_buftarg(
 		xfs_buf_iostrategy(bp);
 	}
 
+	if (wait)
+		blk_replug_current_nested();
+
 	/*
 	 * Remaining list items must be flushed before returning
 	 */

-- 
Jens Axboe

-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
2.6.20-rc6-mm3, Andrew Morton, (Mon Jan 29, 9:45 pm)
Re: 2.6.20-rc6-mm3, Jeff Garzik, (Mon Jan 29, 9:50 pm)
Re: 2.6.20-rc6-mm3, Andrew Morton, (Mon Jan 29, 10:11 pm)
Re: 2.6.20-rc6-mm3, Sunil Naidu, (Tue Jan 30, 1:16 am)
Re: 2.6.20-rc6-mm3, Andrew Morton, (Tue Jan 30, 1:32 am)
Re: 2.6.20-rc6-mm3, Olivier Galibert, (Tue Jan 30, 2:06 am)
Re: 2.6.20-rc6-mm3, Andrew Morton, (Tue Jan 30, 2:26 am)
Re: 2.6.20-rc6-mm3, Evgeniy Polyakov, (Tue Jan 30, 2:56 am)
Re: 2.6.20-rc6-mm3, Olivier Galibert, (Tue Jan 30, 11:47 am)
Re: 2.6.20-rc6-mm3, Maciej Rutecki, (Tue Jan 30, 3:18 pm)
Re: 2.6.20-rc6-mm3, Andrew Morton, (Tue Jan 30, 3:27 pm)
Re: 2.6.20-rc6-mm3, Karsten Wiese, (Tue Jan 30, 5:55 pm)
Re: 2.6.20-rc6-mm3, Tilman Schmidt, (Tue Jan 30, 6:16 pm)
Re: 2.6.20-rc6-mm3, Andrew Morton, (Tue Jan 30, 6:25 pm)
Re: 2.6.20-rc6-mm3, Len Brown, (Wed Jan 31, 12:57 am)
Re: 2.6.20-rc6-mm3, Tilman Schmidt, (Wed Jan 31, 4:38 am)
Re: 2.6.20-rc6-mm3, Maciej Rutecki, (Wed Jan 31, 4:54 am)
Re: 2.6.20-rc6-mm3, Alexey Starikovskiy, (Wed Jan 31, 5:29 am)
Re: 2.6.20-rc6-mm3, Ingo Molnar, (Wed Jan 31, 6:22 am)
Re: 2.6.20-rc6-mm3, Karsten Wiese, (Wed Jan 31, 7:25 am)
Re: 2.6.20-rc6-mm3, Maciej Rutecki, (Wed Jan 31, 9:02 am)
Re: 2.6.20-rc6-mm3, Tilman Schmidt, (Wed Jan 31, 11:28 am)
Re: 2.6.20-rc6-mm3, Mattia Dongili, (Wed Jan 31, 2:52 pm)
Re: 2.6.20-rc6-mm3, Mattia Dongili, (Wed Jan 31, 4:21 pm)
Re: 2.6.20-rc6-mm3, Christoph Lameter, (Wed Jan 31, 5:14 pm)
Re: 2.6.20-rc6-mm3, Andrew Morton, (Wed Jan 31, 5:24 pm)
Re: 2.6.20-rc6-mm3, Christoph Lameter, (Wed Jan 31, 5:27 pm)
Re: 2.6.20-rc6-mm3, Andrew Morton, (Wed Jan 31, 5:36 pm)
Re: 2.6.20-rc6-mm3, Christoph Lameter, (Wed Jan 31, 5:38 pm)
Re: 2.6.20-rc6-mm3, Len Brown, (Wed Jan 31, 9:10 pm)
Re: 2.6.20-rc6-mm3, Andrew Morton, (Wed Jan 31, 9:17 pm)
Re: 2.6.20-rc6-mm3, Len Brown, (Wed Jan 31, 9:25 pm)
Re: 2.6.20-rc6-mm3, David Chinner, (Wed Jan 31, 11:20 pm)
Re: 2.6.20-rc6-mm3, Andrew Morton, (Thu Feb 1, 12:12 am)
Re: 2.6.20-rc6-mm3, Ingo Molnar, (Thu Feb 1, 1:01 am)
Re: 2.6.20-rc6-mm3, Karsten Wiese, (Thu Feb 1, 3:44 am)
[PATCH -mm] gtod persistent clock resume fix, Thomas Gleixner, (Thu Feb 1, 6:03 am)
Re: 2.6.20-rc6-mm3, Cedric Le Goater, (Thu Feb 1, 11:24 am)
Re: 2.6.20-rc6-mm3, Christoph Lameter, (Thu Feb 1, 12:01 pm)
Re: 2.6.20-rc6-mm3, Ingo Molnar, (Thu Feb 1, 12:04 pm)
Re: 2.6.20-rc6-mm3, Jens Axboe, (Thu Feb 1, 12:18 pm)
Re: 2.6.20-rc6-mm3, Thomas Gleixner, (Thu Feb 1, 12:36 pm)
RE: 2.6.20-rc6-mm3, Starikovskiy, Alexey Y, (Thu Feb 1, 12:37 pm)
Re: 2.6.20-rc6-mm3, Thomas Gleixner, (Thu Feb 1, 1:01 pm)
Re: 2.6.20-rc6-mm3, Christoph Lameter, (Thu Feb 1, 1:18 pm)
Re: 2.6.20-rc6-mm3, Mattia Dongili, (Thu Feb 1, 1:24 pm)
Re: 2.6.20-rc6-mm3, Jens Axboe, (Thu Feb 1, 1:26 pm)
Re: 2.6.20-rc6-mm3, Cedric Le Goater, (Thu Feb 1, 1:29 pm)
Re: 2.6.20-rc6-mm3, Cedric Le Goater, (Thu Feb 1, 1:38 pm)
Re: 2.6.20-rc6-mm3, Mattia Dongili, (Thu Feb 1, 2:11 pm)
Re: 2.6.20-rc6-mm3, Mattia Dongili, (Thu Feb 1, 2:37 pm)
Re: 2.6.20-rc6-mm3, Thomas Gleixner, (Thu Feb 1, 3:33 pm)
Re: 2.6.20-rc6-mm3, Christoph Lameter, (Thu Feb 1, 4:02 pm)
Re: 2.6.20-rc6-mm3, David Chinner, (Thu Feb 1, 9:08 pm)
Re: 2.6.20-rc6-mm3, Jens Axboe, (Fri Feb 2, 12:31 am)
RE: 2.6.20-rc6-mm3, Starikovskiy, Alexey Y, (Fri Feb 2, 7:22 am)
Re: 2.6.20-rc6-mm3, Cedric Le Goater, (Fri Feb 2, 7:47 am)
RE: 2.6.20-rc6-mm3, Starikovskiy, Alexey Y, (Fri Feb 2, 7:50 am)
Re: 2.6.20-rc6-mm3, Cedric Le Goater, (Fri Feb 2, 9:04 am)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Fri Feb 2, 10:39 am)
Re: 2.6.20-rc6-mm3, Pavel Machek, (Fri Feb 2, 5:37 pm)
Re: 2.6.20-rc6-mm3, Cedric Le Goater, (Sat Feb 3, 12:30 am)
RE: 2.6.20-rc6-mm3, Starikovskiy, Alexey Y, (Sat Feb 3, 12:57 am)
Re: 2.6.20-rc6-mm3, Jens Axboe, (Mon Feb 5, 5:02 am)
Re: 2.6.20-rc6-mm3, Jens Axboe, (Mon Feb 5, 5:17 am)
Re: 2.6.20-rc6-mm3, Jens Axboe, (Mon Feb 5, 5:56 am)
Re: 2.6.20-rc6-mm3, Christoph Lameter, (Mon Feb 5, 11:20 am)
Re: 2.6.20-rc6-mm3, Jens Axboe, (Mon Feb 5, 11:34 am)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 9:03 am)
Re: 2.6.20-rc6-mm3, Thomas Gleixner, (Tue Feb 6, 11:36 am)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 11:45 am)
Re: 2.6.20-rc6-mm3, Thomas Gleixner, (Tue Feb 6, 12:07 pm)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 12:55 pm)
Re: 2.6.20-rc6-mm3, Thomas Gleixner, (Tue Feb 6, 1:20 pm)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 1:40 pm)
Re: 2.6.20-rc6-mm3, Ingo Molnar, (Tue Feb 6, 1:52 pm)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 1:56 pm)
Re: 2.6.20-rc6-mm3, Ingo Molnar, (Tue Feb 6, 2:09 pm)
Re: 2.6.20-rc6-mm3, Thomas Gleixner, (Tue Feb 6, 2:17 pm)
Re: 2.6.20-rc6-mm3, Ingo Molnar, (Tue Feb 6, 2:20 pm)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 2:23 pm)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 2:25 pm)
Re: 2.6.20-rc6-mm3, Ingo Molnar, (Tue Feb 6, 2:41 pm)
Re: 2.6.20-rc6-mm3, Thomas Gleixner, (Tue Feb 6, 2:43 pm)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 2:54 pm)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 2:59 pm)
Re: 2.6.20-rc6-mm3, Ingo Molnar, (Tue Feb 6, 3:08 pm)
[-mm patch] drivers/scsi/aacraid/: cleanups, Adrian Bunk, (Tue Feb 6, 3:12 pm)
[-mm patch] make gfs2_writepages() static, Adrian Bunk, (Tue Feb 6, 3:12 pm)
Re: 2.6.20-rc6-mm3, Thomas Gleixner, (Tue Feb 6, 3:13 pm)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 3:42 pm)
Re: 2.6.20-rc6-mm3, Ingo Molnar, (Tue Feb 6, 3:56 pm)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 4:04 pm)
Re: 2.6.20-rc6-mm3, Ingo Molnar, (Tue Feb 6, 4:14 pm)
Re: 2.6.20-rc6-mm3, Rob Landley, (Tue Feb 6, 4:15 pm)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 4:22 pm)
Re: 2.6.20-rc6-mm3, Ingo Molnar, (Tue Feb 6, 4:28 pm)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 4:28 pm)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 4:35 pm)
Re: 2.6.20-rc6-mm3, Thomas Gleixner, (Tue Feb 6, 4:36 pm)
Re: 2.6.20-rc6-mm3, Ingo Molnar, (Tue Feb 6, 4:37 pm)
Re: 2.6.20-rc6-mm3, Thomas Gleixner, (Tue Feb 6, 4:44 pm)
Re: 2.6.20-rc6-mm3, Ingo Molnar, (Tue Feb 6, 4:51 pm)
Re: 2.6.20-rc6-mm3, Rob Landley, (Tue Feb 6, 4:55 pm)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 6:12 pm)
Re: 2.6.20-rc6-mm3, Daniel Walker, (Tue Feb 6, 7:46 pm)
Re: [-mm patch] make gfs2_writepages() static, Steven Whitehouse, (Wed Feb 7, 3:50 am)
Re: 2.6.20-rc6-mm3, Thomas Gleixner, (Wed Feb 7, 7:53 am)
Re: 2.6.20-rc6-mm3, Karsten Wiese, (Thu Mar 1, 4:11 am)