It doesn't make any sense to try to find out a close cooperating
queue if current cfqq is the only one in the group.
Signed-off-by: Gui Jianfeng <[email protected]>
---
block/cfq-iosched.c | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index cfb0b2f..89b5dd9 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1750,6 +1750,12 @@ static struct cfq_queue *cfq_close_cooperator(struct cfq_data *cfqd,
return NULL;
/*
+ * Don't search priority tree if it's the only queue in the group.
+ */
+ if (cur_cfqq->cfqg->nr_cfqq == 1)
+ return NULL;
+
+ /*
* We should notice if some of the queues are cooperating, eg
* working closely on the same area of the disk. In that case,
* we can group them together and don't waste time idling.
--
1.5.4.rc3
On Tue, Dec 08 2009, Gui Jianfeng wrote:
> It doesn't make any sense to try to find out a close cooperating
> queue if current cfqq is the only one in the group.
>
> Signed-off-by: Gui Jianfeng <[email protected]>
> ---
> block/cfq-iosched.c | 6 ++++++
> 1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
> index cfb0b2f..89b5dd9 100644
> --- a/block/cfq-iosched.c
> +++ b/block/cfq-iosched.c
> @@ -1750,6 +1750,12 @@ static struct cfq_queue *cfq_close_cooperator(struct cfq_data *cfqd,
> return NULL;
>
> /*
> + * Don't search priority tree if it's the only queue in the group.
> + */
> + if (cur_cfqq->cfqg->nr_cfqq == 1)
> + return NULL;
> +
> + /*
> * We should notice if some of the queues are cooperating, eg
> * working closely on the same area of the disk. In that case,
> * we can group them together and don't waste time idling.
> --
> 1.5.4.rc3
Good point, thanks applied.
--
Jens Axboe
On Tue, Dec 08, 2009 at 03:43:41PM +0800, Gui Jianfeng wrote:
> It doesn't make any sense to try to find out a close cooperating
> queue if current cfqq is the only one in the group.
>
> Signed-off-by: Gui Jianfeng <[email protected]>
Thanks Gui. Looks good.
Vivek
> ---
> block/cfq-iosched.c | 6 ++++++
> 1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
> index cfb0b2f..89b5dd9 100644
> --- a/block/cfq-iosched.c
> +++ b/block/cfq-iosched.c
> @@ -1750,6 +1750,12 @@ static struct cfq_queue *cfq_close_cooperator(struct cfq_data *cfqd,
> return NULL;
>
> /*
> + * Don't search priority tree if it's the only queue in the group.
> + */
> + if (cur_cfqq->cfqg->nr_cfqq == 1)
> + return NULL;
> +
> + /*
> * We should notice if some of the queues are cooperating, eg
> * working closely on the same area of the disk. In that case,
> * we can group them together and don't waste time idling.
> --
> 1.5.4.rc3