Re: PATCH 21/25 - io-controller: Per cgroup request descriptor support

Gui Jianfeng
2009-07-08T03:28:26+00:00

 
Vivek Goyal wrote:
...
>  }
> +#ifdef CONFIG-GROUP-IOSCHED
> +static ssize-t queue-group-requests-show(struct request-queue *q, char *page)
> +{
> +	return queue-var-show(q->nr-group-requests, (page));
> +}
> +
> +static ssize-t
> +queue-group-requests-store(struct request-queue *q, const char *page,
> +					size-t count)
> +{
> +	unsigned long nr;
> +	int ret = queue-var-store(&nr, page, count);
> +	if (nr < BLKDEV-MIN-RQ)
> +		nr = BLKDEV-MIN-RQ;
> +
> +	spin-lock-irq(q->queue-lock);
> +	q->nr-group-requests = nr;
> +	spin-unlock-irq(q->queue-lock);
> +	return ret;
> +}
> +#endif

Hi Vivek,

Do we need to update the congestion thresholds for allocated io groups?

Signed-off-by: Gui Jianfeng <guijianfeng@cn.fujitsu.com>
-diff  
+extern void elv-io-group-congestion-threshold(struct request-queue *q,
+					      struct io-group *iog);
+
 static ssize-t
 queue-group-requests-store(struct request-queue *q, const char *page,
 					size-t count)
 {
+	struct hlist-node *n;
+	struct io-group *iog;
+	struct elv-fq-data *efqd;
 	unsigned long nr;
 	int ret = queue-var-store(&nr, page, count);
+
 	if (nr < BLKDEV-MIN-RQ)
 		nr = BLKDEV-MIN-RQ;
 
 	spin-lock-irq(q->queue-lock);
+
 	q->nr-group-requests = nr;
+
+	efqd = &q->elevator->efqd;
+
+	hlist-for-each-entry(iog, n, &efqd->group-list, elv-data-node) {
+		elv-io-group-congestion-threshold(q, iog);
+	}
+
 	spin-unlock-irq(q->queue-lock);
 	return ret;
 }

Loading


$ This page is proudly powered by www.pubbs.net, you can see more at kernel archive | Partners: ListWare Global Manufacturers