Messages in this thread Patch in this message | | | Date | Fri, 07 Aug 2009 10:35:57 +0800 | From | Gui Jianfeng <> | Subject | [PATCH] CFQ: mark must_alloc flag when a cfqq doesn't allocate any request |
| |
Hi Jens,
CFQ judges whether must_alloc flag is set, but never marks this flag. This patch set must_alloc flag when there is no request allocated by a cfqq. This change ensures cfqq will get at least one request even if the queue is full. Hope it helps.
Signed-off-by: Gui Jianfeng <guijianfeng@cn.fujitsu.com> --- block/cfq-iosched.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index fd7080e..531a404 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c @@ -2279,6 +2279,9 @@ static void cfq_put_request(struct request *rq) BUG_ON(!cfqq->allocated[rw]); cfqq->allocated[rw]--; + if (!(cfqq->allocated[0] + cfqq->allocated[1])) + cfq_mark_cfqq_must_alloc(cfqq); + put_io_context(RQ_CIC(rq)->ioc); rq->elevator_private = NULL; -- 1.5.4.rc3
| |