Thread (18 messages) 18 messages, 4 authors, 2011-06-30

Re: [RFC PATCH 0/3] block: Fix fsync slowness with CFQ cgroups

From: Vivek Goyal <vgoyal@redhat.com>
Date: 2011-06-28 14:47:44
Also in: linux-fsdevel, lkml

On Tue, Jun 28, 2011 at 06:42:57PM +0400, Konstantin Khlebnikov wrote:
Vivek Goyal wrote:
quoted
On Tue, Jun 28, 2011 at 03:00:39PM +0400, Konstantin Khlebnikov wrote:
quoted
Vivek Goyal wrote:
quoted
This patch series seems to be working for me. I did testing for ext4 only.
This series is based on for-3.1/core branch of Jen's block tree.
Konstantin, can you please give it a try and see if it fixes your
issue.
It works for me too, for ext3 and ext4, on top 3.0-rc5, after these trivial fixes:
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1511,7 +1519,7 @@ static void cfq_add_rq_rb(struct request *rq)
         * if that happens, put the alias on the dispatch list
         */
        while ((__alias = elv_rb_add(&cfqq->sort_list, rq)) != NULL)
-               cfq_dispatch_insert(cfqd->queue, __alias);
+               cfq_dispatch_insert(cfqd->queue, __alias, false);

        if (!cfq_cfqq_on_rr(cfqq))
                cfq_add_cfqq_rr(cfqd, cfqq);
@@ -3797,12 +3797,11 @@ cfq_set_depends_on_task(struct request_queue *q, struct task_struct *tsk)
         */
        rcu_read_lock();
        if (task_blkio_cgroup(current) == task_blkio_cgroup(tsk))
-               return;
-       rcu_read_unlock();
+               goto out_unlock_rcu;

        cic = cfq_cic_lookup(cfqd, current->io_context);
        if (!cic)
-               return;
+               goto out_unlock_rcu;
You have done this change because you want to keep cfq_cic_lookup() also
in rcu read side critical section? I am assuming that it works even
without this. Though keeping it under rcu is probably more correct as
cic objects are freed in rcu manner.
No, your just forgot to relese rcu in case task_blkio_cgroup(current) == task_blkio_cgroup(tsk)
Oh, that's right. Thanks for catching this. I will fix it.

Thanks
Vivek
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help