2007-12-05 10:24:23

by Aaron Carroll

[permalink] [raw]
Subject: [PATCH] as-iosched: fix write batch start point

New write batches currently start from where the last one completed.
We have no idea where the head is after switching batches, so this
makes little sense. Instead, start the next batch from the request
with the earliest deadline in the hope that we avoid a deadline
expiry later on.

Signed-off-by: Aaron Carroll <[email protected]>
---
block/as-iosched.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/block/as-iosched.c b/block/as-iosched.c
index 4513fc5..555cd6b 100644
--- a/block/as-iosched.c
+++ b/block/as-iosched.c
@@ -1097,7 +1097,8 @@ dispatch_writes:
ad->batch_data_dir = REQ_ASYNC;
ad->current_write_count = ad->write_batch_count;
ad->write_batch_idled = 0;
- rq = ad->next_rq[ad->batch_data_dir];
+ rq = rq_entry_fifo(ad->fifo_list[REQ_ASYNC].next);
+ ad->last_check_fifo[REQ_ASYNC] = jiffies;
goto dispatch_request;
}

--


2007-12-05 10:14:44

by Nick Piggin

[permalink] [raw]
Subject: Re: [PATCH] as-iosched: fix write batch start point

On Wed, Dec 05, 2007 at 09:07:07PM +1100, Aaron Carroll wrote:
> New write batches currently start from where the last one completed.
> We have no idea where the head is after switching batches, so this
> makes little sense. Instead, start the next batch from the request
> with the earliest deadline in the hope that we avoid a deadline
> expiry later on.
>
> Signed-off-by: Aaron Carroll <[email protected]>

I think this seems reasonable. What's deadline doing in this case?
They should probably be kept in synch where possible...

Acked-by: Nick Piggin <[email protected]>

> ---
> block/as-iosched.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/block/as-iosched.c b/block/as-iosched.c
> index 4513fc5..555cd6b 100644
> --- a/block/as-iosched.c
> +++ b/block/as-iosched.c
> @@ -1097,7 +1097,8 @@ dispatch_writes:
> ad->batch_data_dir = REQ_ASYNC;
> ad->current_write_count = ad->write_batch_count;
> ad->write_batch_idled = 0;
> - rq = ad->next_rq[ad->batch_data_dir];
> + rq = rq_entry_fifo(ad->fifo_list[REQ_ASYNC].next);
> + ad->last_check_fifo[REQ_ASYNC] = jiffies;
> goto dispatch_request;
> }
>
> --

2007-12-05 10:18:17

by Jens Axboe

[permalink] [raw]
Subject: Re: [PATCH] as-iosched: fix write batch start point

On Wed, Dec 05 2007, Nick Piggin wrote:
> On Wed, Dec 05, 2007 at 09:07:07PM +1100, Aaron Carroll wrote:
> > New write batches currently start from where the last one completed.
> > We have no idea where the head is after switching batches, so this
> > makes little sense. Instead, start the next batch from the request
> > with the earliest deadline in the hope that we avoid a deadline
> > expiry later on.
> >
> > Signed-off-by: Aaron Carroll <[email protected]>
>
> I think this seems reasonable. What's deadline doing in this case?
> They should probably be kept in synch where possible...

Aaron sent a similar patch for deadline a while ago, so this just
matches them up again. I acked that patch, it makes a lot of sense to
me.

--
Jens Axboe