From: Chris Mason Date: Fri, 16 Jan 2009 16:58:19 +0000 (-0500) Subject: Btrfs: Clear the device->running_pending flag before bailing on congestion X-Git-Tag: v3.12-rc1~16187^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1d9e2ae949411c2f329f30e01ea0355cd02c4296;p=kernel%2Fkernel-generic.git Btrfs: Clear the device->running_pending flag before bailing on congestion Btrfs maintains a queue of async bio submissions so the checksumming threads don't have to wait on get_request_wait. In order to avoid extra wakeups, this code has a running_pending flag that is used to tell new submissions they don't need to wake the thread. When the threads notice congestion on a single device, they may decide to requeue the job and move on to other devices. This makes sure the running_pending flag is cleared before the job is requeued. It should help avoid IO stalls by making sure the task is woken up when new submissions come in. Signed-off-by: Chris Mason --- diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index b187b53..3451e1c 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -220,6 +220,7 @@ loop: tail->bi_next = old_head; else device->pending_bio_tail = tail; + device->running_pending = 0; spin_unlock(&device->io_lock); btrfs_requeue_work(&device->work);