<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/block, branch v2.6.33.5</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>block: ensure jiffies wrap is handled correctly in blk_rq_timed_out_timer</title>
<updated>2010-05-12T22:02:43+00:00</updated>
<author>
<name>Richard Kennedy</name>
<email>richard@rsk.demon.co.uk</email>
</author>
<published>2010-04-14T18:54:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=51b7721fd83309000aa19a2a6ec0edb9665bb5f9'/>
<id>51b7721fd83309000aa19a2a6ec0edb9665bb5f9</id>
<content type='text'>
commit a534dbe96e9929c7245924d8252d89048c23d569 upstream.

blk_rq_timed_out_timer() relied on blk_add_timer() never returning a
timer value of zero, but commit 7838c15b8dd18e78a523513749e5b54bda07b0cb
removed the code that bumped this value when it was zero.
Therefore when jiffies is near wrap we could get unlucky &amp; not set the
timeout value correctly.

This patch uses a flag to indicate that the timeout value was set and so
handles jiffies wrap correctly, and it keeps all the logic in one
function so should be easier to maintain in the future.

Signed-off-by: Richard Kennedy &lt;richard@rsk.demon.co.uk&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit a534dbe96e9929c7245924d8252d89048c23d569 upstream.

blk_rq_timed_out_timer() relied on blk_add_timer() never returning a
timer value of zero, but commit 7838c15b8dd18e78a523513749e5b54bda07b0cb
removed the code that bumped this value when it was zero.
Therefore when jiffies is near wrap we could get unlucky &amp; not set the
timeout value correctly.

This patch uses a flag to indicate that the timeout value was set and so
handles jiffies wrap correctly, and it keeps all the logic in one
function so should be easier to maintain in the future.

Signed-off-by: Richard Kennedy &lt;richard@rsk.demon.co.uk&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "block: improve queue_should_plug() by looking at IO depths"</title>
<updated>2010-02-23T07:40:43+00:00</updated>
<author>
<name>Jens Axboe</name>
<email>jens.axboe@oracle.com</email>
</author>
<published>2010-02-23T07:40:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=79da0644a8e0838522828f106e4049639eea6baf'/>
<id>79da0644a8e0838522828f106e4049639eea6baf</id>
<content type='text'>
This reverts commit fb1e75389bd06fd5987e9cda1b4e0305c782f854.

"Benjamin S." &lt;sbenni@gmx.de&gt; reports that the patch in question
causes a big drop in sequential throughput for him, dropping from
200MB/sec down to only 70MB/sec.

Needs to be investigated more fully, for now lets just revert the
offending commit.

Conflicts:

	include/linux/blkdev.h

Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit fb1e75389bd06fd5987e9cda1b4e0305c782f854.

"Benjamin S." &lt;sbenni@gmx.de&gt; reports that the patch in question
causes a big drop in sequential throughput for him, dropping from
200MB/sec down to only 70MB/sec.

Needs to be investigated more fully, for now lets just revert the
offending commit.

Conflicts:

	include/linux/blkdev.h

Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfq-iosched: split seeky coop queues after one slice</title>
<updated>2010-02-05T12:11:45+00:00</updated>
<author>
<name>Shaohua Li</name>
<email>shaohua.li@intel.com</email>
</author>
<published>2010-02-05T12:11:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ae54abed636d18f7939c965f21ad126001dbe34c'/>
<id>ae54abed636d18f7939c965f21ad126001dbe34c</id>
<content type='text'>
Currently we split seeky coop queues after 1s, which is too big. Below patch
marks seeky coop queue split_coop flag after one slice. After that, if new
requests come in, the queues will be splitted. Patch is suggested by Corrado.

Signed-off-by: Shaohua Li &lt;shaohua.li@intel.com&gt;
Reviewed-by: Corrado Zoccolo &lt;czoccolo@gmail.com&gt;
Acked-by: Jeff Moyer &lt;jmoyer@redhat.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently we split seeky coop queues after 1s, which is too big. Below patch
marks seeky coop queue split_coop flag after one slice. After that, if new
requests come in, the queues will be splitted. Patch is suggested by Corrado.

Signed-off-by: Shaohua Li &lt;shaohua.li@intel.com&gt;
Reviewed-by: Corrado Zoccolo &lt;czoccolo@gmail.com&gt;
Acked-by: Jeff Moyer &lt;jmoyer@redhat.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfq-iosched: Do not idle on async queues</title>
<updated>2010-02-02T19:46:10+00:00</updated>
<author>
<name>Vivek Goyal</name>
<email>vgoyal@redhat.com</email>
</author>
<published>2010-02-02T19:45:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=1efe8fe1c2240acc476bed77740883df63373862'/>
<id>1efe8fe1c2240acc476bed77740883df63373862</id>
<content type='text'>
Few weeks back, Shaohua Li had posted similar patch. I am reposting it
with more test results.

This patch does two things.

- Do not idle on async queues.

- It also changes the write queue depth CFQ drives (cfq_may_dispatch()).
  Currently, we seem to driving queue depth of 1 always for WRITES. This is
  true even if there is only one write queue in the system and all the logic
  of infinite queue depth in case of single busy queue as well as slowly
  increasing queue depth based on last delayed sync request does not seem to
  be kicking in at all.

This patch will allow deeper WRITE queue depths (subjected to the other
WRITE queue depth contstraints like cfq_quantum and last delayed sync
request).

Shaohua Li had reported getting more out of his SSD. For me, I have got
one Lun exported from an HP EVA and when pure buffered writes are on, I
can get more out of the system. Following are test results of pure
buffered writes (with end_fsync=1) with vanilla and patched kernel. These
results are average of 3 sets of run with increasing number of threads.

AVERAGE[bufwfs][vanilla]
-------
job       Set NR  ReadBW(KB/s)   MaxClat(us)    WriteBW(KB/s)  MaxClat(us)
---       --- --  ------------   -----------    -------------  -----------
bufwfs    3   1   0              0              95349          474141
bufwfs    3   2   0              0              100282         806926
bufwfs    3   4   0              0              109989         2.7301e+06
bufwfs    3   8   0              0              116642         3762231
bufwfs    3   16  0              0              118230         6902970

AVERAGE[bufwfs] [patched kernel]
-------
bufwfs    3   1   0              0              270722         404352
bufwfs    3   2   0              0              206770         1.06552e+06
bufwfs    3   4   0              0              195277         1.62283e+06
bufwfs    3   8   0              0              260960         2.62979e+06
bufwfs    3   16  0              0              299260         1.70731e+06

I also ran buffered writes along with some sequential reads and some
buffered reads going on in the system on a SATA disk because the potential
risk could be that we should not be driving queue depth higher in presence
of sync IO going to keep the max clat low.

With some random and sequential reads going on in the system on one SATA
disk I did not see any significant increase in max clat. So it looks like
other WRITE queue depth control logic is doing its job. Here are the
results.

AVERAGE[brr, bsr, bufw together] [vanilla]
-------
job       Set NR  ReadBW(KB/s)   MaxClat(us)    WriteBW(KB/s)  MaxClat(us)
---       --- --  ------------   -----------    -------------  -----------
brr       3   1   850            546345         0              0
bsr       3   1   14650          729543         0              0
bufw      3   1   0              0              23908          8274517

brr       3   2   981.333        579395         0              0
bsr       3   2   14149.7        1175689        0              0
bufw      3   2   0              0              21921          1.28108e+07

brr       3   4   898.333        1.75527e+06    0              0
bsr       3   4   12230.7        1.40072e+06    0              0
bufw      3   4   0              0              19722.3        2.4901e+07

brr       3   8   900            3160594        0              0
bsr       3   8   9282.33        1.91314e+06    0              0
bufw      3   8   0              0              18789.3        23890622

AVERAGE[brr, bsr, bufw mixed] [patched kernel]
-------
job       Set NR  ReadBW(KB/s)   MaxClat(us)    WriteBW(KB/s)  MaxClat(us)
---       --- --  ------------   -----------    -------------  -----------
brr       3   1   837            417973         0              0
bsr       3   1   14357.7        591275         0              0
bufw      3   1   0              0              24869.7        8910662

brr       3   2   1038.33        543434         0              0
bsr       3   2   13351.3        1205858        0              0
bufw      3   2   0              0              18626.3        13280370

brr       3   4   913            1.86861e+06    0              0
bsr       3   4   12652.3        1430974        0              0
bufw      3   4   0              0              15343.3        2.81305e+07

brr       3   8   890            2.92695e+06    0              0
bsr       3   8   9635.33        1.90244e+06    0              0
bufw      3   8   0              0              17200.3        24424392

So looks like it might make sense to include this patch.

Thanks
Vivek

Signed-off-by: Vivek Goyal &lt;vgoyal@redhat.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Few weeks back, Shaohua Li had posted similar patch. I am reposting it
with more test results.

This patch does two things.

- Do not idle on async queues.

- It also changes the write queue depth CFQ drives (cfq_may_dispatch()).
  Currently, we seem to driving queue depth of 1 always for WRITES. This is
  true even if there is only one write queue in the system and all the logic
  of infinite queue depth in case of single busy queue as well as slowly
  increasing queue depth based on last delayed sync request does not seem to
  be kicking in at all.

This patch will allow deeper WRITE queue depths (subjected to the other
WRITE queue depth contstraints like cfq_quantum and last delayed sync
request).

Shaohua Li had reported getting more out of his SSD. For me, I have got
one Lun exported from an HP EVA and when pure buffered writes are on, I
can get more out of the system. Following are test results of pure
buffered writes (with end_fsync=1) with vanilla and patched kernel. These
results are average of 3 sets of run with increasing number of threads.

AVERAGE[bufwfs][vanilla]
-------
job       Set NR  ReadBW(KB/s)   MaxClat(us)    WriteBW(KB/s)  MaxClat(us)
---       --- --  ------------   -----------    -------------  -----------
bufwfs    3   1   0              0              95349          474141
bufwfs    3   2   0              0              100282         806926
bufwfs    3   4   0              0              109989         2.7301e+06
bufwfs    3   8   0              0              116642         3762231
bufwfs    3   16  0              0              118230         6902970

AVERAGE[bufwfs] [patched kernel]
-------
bufwfs    3   1   0              0              270722         404352
bufwfs    3   2   0              0              206770         1.06552e+06
bufwfs    3   4   0              0              195277         1.62283e+06
bufwfs    3   8   0              0              260960         2.62979e+06
bufwfs    3   16  0              0              299260         1.70731e+06

I also ran buffered writes along with some sequential reads and some
buffered reads going on in the system on a SATA disk because the potential
risk could be that we should not be driving queue depth higher in presence
of sync IO going to keep the max clat low.

With some random and sequential reads going on in the system on one SATA
disk I did not see any significant increase in max clat. So it looks like
other WRITE queue depth control logic is doing its job. Here are the
results.

AVERAGE[brr, bsr, bufw together] [vanilla]
-------
job       Set NR  ReadBW(KB/s)   MaxClat(us)    WriteBW(KB/s)  MaxClat(us)
---       --- --  ------------   -----------    -------------  -----------
brr       3   1   850            546345         0              0
bsr       3   1   14650          729543         0              0
bufw      3   1   0              0              23908          8274517

brr       3   2   981.333        579395         0              0
bsr       3   2   14149.7        1175689        0              0
bufw      3   2   0              0              21921          1.28108e+07

brr       3   4   898.333        1.75527e+06    0              0
bsr       3   4   12230.7        1.40072e+06    0              0
bufw      3   4   0              0              19722.3        2.4901e+07

brr       3   8   900            3160594        0              0
bsr       3   8   9282.33        1.91314e+06    0              0
bufw      3   8   0              0              18789.3        23890622

AVERAGE[brr, bsr, bufw mixed] [patched kernel]
-------
job       Set NR  ReadBW(KB/s)   MaxClat(us)    WriteBW(KB/s)  MaxClat(us)
---       --- --  ------------   -----------    -------------  -----------
brr       3   1   837            417973         0              0
bsr       3   1   14357.7        591275         0              0
bufw      3   1   0              0              24869.7        8910662

brr       3   2   1038.33        543434         0              0
bsr       3   2   13351.3        1205858        0              0
bufw      3   2   0              0              18626.3        13280370

brr       3   4   913            1.86861e+06    0              0
bsr       3   4   12652.3        1430974        0              0
bufw      3   4   0              0              15343.3        2.81305e+07

brr       3   8   890            2.92695e+06    0              0
bsr       3   8   9635.33        1.90244e+06    0              0
bufw      3   8   0              0              17200.3        24424392

So looks like it might make sense to include this patch.

Thanks
Vivek

Signed-off-by: Vivek Goyal &lt;vgoyal@redhat.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>blk-cgroup: Fix potential deadlock in blk-cgroup</title>
<updated>2010-02-01T08:58:54+00:00</updated>
<author>
<name>Gui Jianfeng</name>
<email>guijianfeng@cn.fujitsu.com</email>
</author>
<published>2010-02-01T08:58:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=bcf4dd43424cdfd8195f3955300a579fe58e9911'/>
<id>bcf4dd43424cdfd8195f3955300a579fe58e9911</id>
<content type='text'>
I triggered a lockdep warning as following.

=======================================================
[ INFO: possible circular locking dependency detected ]
2.6.33-rc2 #1
-------------------------------------------------------
test_io_control/7357 is trying to acquire lock:
 (blkio_list_lock){+.+...}, at: [&lt;c053a990&gt;] blkiocg_weight_write+0x82/0x9e

but task is already holding lock:
 (&amp;(&amp;blkcg-&gt;lock)-&gt;rlock){......}, at: [&lt;c053a949&gt;] blkiocg_weight_write+0x3b/0x9e

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #2 (&amp;(&amp;blkcg-&gt;lock)-&gt;rlock){......}:
       [&lt;c04583b7&gt;] validate_chain+0x8bc/0xb9c
       [&lt;c0458dba&gt;] __lock_acquire+0x723/0x789
       [&lt;c0458eb0&gt;] lock_acquire+0x90/0xa7
       [&lt;c0692b0a&gt;] _raw_spin_lock_irqsave+0x27/0x5a
       [&lt;c053a4e1&gt;] blkiocg_add_blkio_group+0x1a/0x6d
       [&lt;c053cac7&gt;] cfq_get_queue+0x225/0x3de
       [&lt;c053eec2&gt;] cfq_set_request+0x217/0x42d
       [&lt;c052c8a6&gt;] elv_set_request+0x17/0x26
       [&lt;c0532a0f&gt;] get_request+0x203/0x2c5
       [&lt;c0532ae9&gt;] get_request_wait+0x18/0x10e
       [&lt;c0533470&gt;] __make_request+0x2ba/0x375
       [&lt;c0531985&gt;] generic_make_request+0x28d/0x30f
       [&lt;c0532da7&gt;] submit_bio+0x8a/0x8f
       [&lt;c04d827a&gt;] submit_bh+0xf0/0x10f
       [&lt;c04d91d2&gt;] ll_rw_block+0xc0/0xf9
       [&lt;f86e9705&gt;] ext3_find_entry+0x319/0x544 [ext3]
       [&lt;f86eae58&gt;] ext3_lookup+0x2c/0xb9 [ext3]
       [&lt;c04c3e1b&gt;] do_lookup+0xd3/0x172
       [&lt;c04c56c8&gt;] link_path_walk+0x5fb/0x95c
       [&lt;c04c5a65&gt;] path_walk+0x3c/0x81
       [&lt;c04c5b63&gt;] do_path_lookup+0x21/0x8a
       [&lt;c04c66cc&gt;] do_filp_open+0xf0/0x978
       [&lt;c04c0c7e&gt;] open_exec+0x1b/0xb7
       [&lt;c04c1436&gt;] do_execve+0xbb/0x266
       [&lt;c04081a9&gt;] sys_execve+0x24/0x4a
       [&lt;c04028a2&gt;] ptregs_execve+0x12/0x18

-&gt; #1 (&amp;(&amp;q-&gt;__queue_lock)-&gt;rlock){..-.-.}:
       [&lt;c04583b7&gt;] validate_chain+0x8bc/0xb9c
       [&lt;c0458dba&gt;] __lock_acquire+0x723/0x789
       [&lt;c0458eb0&gt;] lock_acquire+0x90/0xa7
       [&lt;c0692b0a&gt;] _raw_spin_lock_irqsave+0x27/0x5a
       [&lt;c053dd2a&gt;] cfq_unlink_blkio_group+0x17/0x41
       [&lt;c053a6eb&gt;] blkiocg_destroy+0x72/0xc7
       [&lt;c0467df0&gt;] cgroup_diput+0x4a/0xb2
       [&lt;c04ca473&gt;] dentry_iput+0x93/0xb7
       [&lt;c04ca4b3&gt;] d_kill+0x1c/0x36
       [&lt;c04cb5c5&gt;] dput+0xf5/0xfe
       [&lt;c04c6084&gt;] do_rmdir+0x95/0xbe
       [&lt;c04c60ec&gt;] sys_rmdir+0x10/0x12
       [&lt;c04027cc&gt;] sysenter_do_call+0x12/0x32

-&gt; #0 (blkio_list_lock){+.+...}:
       [&lt;c0458117&gt;] validate_chain+0x61c/0xb9c
       [&lt;c0458dba&gt;] __lock_acquire+0x723/0x789
       [&lt;c0458eb0&gt;] lock_acquire+0x90/0xa7
       [&lt;c06929fd&gt;] _raw_spin_lock+0x1e/0x4e
       [&lt;c053a990&gt;] blkiocg_weight_write+0x82/0x9e
       [&lt;c0467f1e&gt;] cgroup_file_write+0xc6/0x1c0
       [&lt;c04bd2f3&gt;] vfs_write+0x8c/0x116
       [&lt;c04bd7c6&gt;] sys_write+0x3b/0x60
       [&lt;c04027cc&gt;] sysenter_do_call+0x12/0x32

other info that might help us debug this:

1 lock held by test_io_control/7357:
 #0:  (&amp;(&amp;blkcg-&gt;lock)-&gt;rlock){......}, at: [&lt;c053a949&gt;] blkiocg_weight_write+0x3b/0x9e
stack backtrace:
Pid: 7357, comm: test_io_control Not tainted 2.6.33-rc2 #1
Call Trace:
 [&lt;c045754f&gt;] print_circular_bug+0x91/0x9d
 [&lt;c0458117&gt;] validate_chain+0x61c/0xb9c
 [&lt;c0458dba&gt;] __lock_acquire+0x723/0x789
 [&lt;c0458eb0&gt;] lock_acquire+0x90/0xa7
 [&lt;c053a990&gt;] ? blkiocg_weight_write+0x82/0x9e
 [&lt;c06929fd&gt;] _raw_spin_lock+0x1e/0x4e
 [&lt;c053a990&gt;] ? blkiocg_weight_write+0x82/0x9e
 [&lt;c053a990&gt;] blkiocg_weight_write+0x82/0x9e
 [&lt;c0467f1e&gt;] cgroup_file_write+0xc6/0x1c0
 [&lt;c0454df5&gt;] ? trace_hardirqs_off+0xb/0xd
 [&lt;c044d93a&gt;] ? cpu_clock+0x2e/0x44
 [&lt;c050e6ec&gt;] ? security_file_permission+0xf/0x11
 [&lt;c04bcdda&gt;] ? rw_verify_area+0x8a/0xad
 [&lt;c0467e58&gt;] ? cgroup_file_write+0x0/0x1c0
 [&lt;c04bd2f3&gt;] vfs_write+0x8c/0x116
 [&lt;c04bd7c6&gt;] sys_write+0x3b/0x60
 [&lt;c04027cc&gt;] sysenter_do_call+0x12/0x32

To prevent deadlock, we should take locks as following sequence:

blkio_list_lock -&gt; queue_lock -&gt;  blkcg_lock.

The following patch should fix this bug.

Signed-off-by: Gui Jianfeng &lt;guijianfeng@cn.fujitsu.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I triggered a lockdep warning as following.

=======================================================
[ INFO: possible circular locking dependency detected ]
2.6.33-rc2 #1
-------------------------------------------------------
test_io_control/7357 is trying to acquire lock:
 (blkio_list_lock){+.+...}, at: [&lt;c053a990&gt;] blkiocg_weight_write+0x82/0x9e

but task is already holding lock:
 (&amp;(&amp;blkcg-&gt;lock)-&gt;rlock){......}, at: [&lt;c053a949&gt;] blkiocg_weight_write+0x3b/0x9e

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #2 (&amp;(&amp;blkcg-&gt;lock)-&gt;rlock){......}:
       [&lt;c04583b7&gt;] validate_chain+0x8bc/0xb9c
       [&lt;c0458dba&gt;] __lock_acquire+0x723/0x789
       [&lt;c0458eb0&gt;] lock_acquire+0x90/0xa7
       [&lt;c0692b0a&gt;] _raw_spin_lock_irqsave+0x27/0x5a
       [&lt;c053a4e1&gt;] blkiocg_add_blkio_group+0x1a/0x6d
       [&lt;c053cac7&gt;] cfq_get_queue+0x225/0x3de
       [&lt;c053eec2&gt;] cfq_set_request+0x217/0x42d
       [&lt;c052c8a6&gt;] elv_set_request+0x17/0x26
       [&lt;c0532a0f&gt;] get_request+0x203/0x2c5
       [&lt;c0532ae9&gt;] get_request_wait+0x18/0x10e
       [&lt;c0533470&gt;] __make_request+0x2ba/0x375
       [&lt;c0531985&gt;] generic_make_request+0x28d/0x30f
       [&lt;c0532da7&gt;] submit_bio+0x8a/0x8f
       [&lt;c04d827a&gt;] submit_bh+0xf0/0x10f
       [&lt;c04d91d2&gt;] ll_rw_block+0xc0/0xf9
       [&lt;f86e9705&gt;] ext3_find_entry+0x319/0x544 [ext3]
       [&lt;f86eae58&gt;] ext3_lookup+0x2c/0xb9 [ext3]
       [&lt;c04c3e1b&gt;] do_lookup+0xd3/0x172
       [&lt;c04c56c8&gt;] link_path_walk+0x5fb/0x95c
       [&lt;c04c5a65&gt;] path_walk+0x3c/0x81
       [&lt;c04c5b63&gt;] do_path_lookup+0x21/0x8a
       [&lt;c04c66cc&gt;] do_filp_open+0xf0/0x978
       [&lt;c04c0c7e&gt;] open_exec+0x1b/0xb7
       [&lt;c04c1436&gt;] do_execve+0xbb/0x266
       [&lt;c04081a9&gt;] sys_execve+0x24/0x4a
       [&lt;c04028a2&gt;] ptregs_execve+0x12/0x18

-&gt; #1 (&amp;(&amp;q-&gt;__queue_lock)-&gt;rlock){..-.-.}:
       [&lt;c04583b7&gt;] validate_chain+0x8bc/0xb9c
       [&lt;c0458dba&gt;] __lock_acquire+0x723/0x789
       [&lt;c0458eb0&gt;] lock_acquire+0x90/0xa7
       [&lt;c0692b0a&gt;] _raw_spin_lock_irqsave+0x27/0x5a
       [&lt;c053dd2a&gt;] cfq_unlink_blkio_group+0x17/0x41
       [&lt;c053a6eb&gt;] blkiocg_destroy+0x72/0xc7
       [&lt;c0467df0&gt;] cgroup_diput+0x4a/0xb2
       [&lt;c04ca473&gt;] dentry_iput+0x93/0xb7
       [&lt;c04ca4b3&gt;] d_kill+0x1c/0x36
       [&lt;c04cb5c5&gt;] dput+0xf5/0xfe
       [&lt;c04c6084&gt;] do_rmdir+0x95/0xbe
       [&lt;c04c60ec&gt;] sys_rmdir+0x10/0x12
       [&lt;c04027cc&gt;] sysenter_do_call+0x12/0x32

-&gt; #0 (blkio_list_lock){+.+...}:
       [&lt;c0458117&gt;] validate_chain+0x61c/0xb9c
       [&lt;c0458dba&gt;] __lock_acquire+0x723/0x789
       [&lt;c0458eb0&gt;] lock_acquire+0x90/0xa7
       [&lt;c06929fd&gt;] _raw_spin_lock+0x1e/0x4e
       [&lt;c053a990&gt;] blkiocg_weight_write+0x82/0x9e
       [&lt;c0467f1e&gt;] cgroup_file_write+0xc6/0x1c0
       [&lt;c04bd2f3&gt;] vfs_write+0x8c/0x116
       [&lt;c04bd7c6&gt;] sys_write+0x3b/0x60
       [&lt;c04027cc&gt;] sysenter_do_call+0x12/0x32

other info that might help us debug this:

1 lock held by test_io_control/7357:
 #0:  (&amp;(&amp;blkcg-&gt;lock)-&gt;rlock){......}, at: [&lt;c053a949&gt;] blkiocg_weight_write+0x3b/0x9e
stack backtrace:
Pid: 7357, comm: test_io_control Not tainted 2.6.33-rc2 #1
Call Trace:
 [&lt;c045754f&gt;] print_circular_bug+0x91/0x9d
 [&lt;c0458117&gt;] validate_chain+0x61c/0xb9c
 [&lt;c0458dba&gt;] __lock_acquire+0x723/0x789
 [&lt;c0458eb0&gt;] lock_acquire+0x90/0xa7
 [&lt;c053a990&gt;] ? blkiocg_weight_write+0x82/0x9e
 [&lt;c06929fd&gt;] _raw_spin_lock+0x1e/0x4e
 [&lt;c053a990&gt;] ? blkiocg_weight_write+0x82/0x9e
 [&lt;c053a990&gt;] blkiocg_weight_write+0x82/0x9e
 [&lt;c0467f1e&gt;] cgroup_file_write+0xc6/0x1c0
 [&lt;c0454df5&gt;] ? trace_hardirqs_off+0xb/0xd
 [&lt;c044d93a&gt;] ? cpu_clock+0x2e/0x44
 [&lt;c050e6ec&gt;] ? security_file_permission+0xf/0x11
 [&lt;c04bcdda&gt;] ? rw_verify_area+0x8a/0xad
 [&lt;c0467e58&gt;] ? cgroup_file_write+0x0/0x1c0
 [&lt;c04bd2f3&gt;] vfs_write+0x8c/0x116
 [&lt;c04bd7c6&gt;] sys_write+0x3b/0x60
 [&lt;c04027cc&gt;] sysenter_do_call+0x12/0x32

To prevent deadlock, we should take locks as following sequence:

blkio_list_lock -&gt; queue_lock -&gt;  blkcg_lock.

The following patch should fix this bug.

Signed-off-by: Gui Jianfeng &lt;guijianfeng@cn.fujitsu.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfq-iosched: Respect ioprio_class when preempting</title>
<updated>2010-01-11T15:16:18+00:00</updated>
<author>
<name>Divyesh Shah</name>
<email>dpshah@google.com</email>
</author>
<published>2010-01-07T02:58:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=875feb63b9567442be73efbcc9a8470e376d6423'/>
<id>875feb63b9567442be73efbcc9a8470e376d6423</id>
<content type='text'>
In cfq_should_preempt(), we currently allow some cases where a non-RT request
can preempt an ongoing RT cfqq timeslice. This should not happen.
Examples include:

o A sync_noidle wl type non-RT request pre-empting a sync_noidle wl type cfqq
  on which we are idling.
o Once we have per-cgroup async queues, a non-RT sync request pre-empting a RT
  async cfqq.

Signed-off-by: Divyesh Shah&lt;dpshah@google.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In cfq_should_preempt(), we currently allow some cases where a non-RT request
can preempt an ongoing RT cfqq timeslice. This should not happen.
Examples include:

o A sync_noidle wl type non-RT request pre-empting a sync_noidle wl type cfqq
  on which we are idling.
o Once we have per-cgroup async queues, a non-RT sync request pre-empting a RT
  async cfqq.

Signed-off-by: Divyesh Shah&lt;dpshah@google.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>block: removed unused as_io_context</title>
<updated>2010-01-11T13:29:20+00:00</updated>
<author>
<name>Kirill Afonshin</name>
<email>kirill_nnov@mail.ru</email>
</author>
<published>2010-01-08T19:09:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ce289321b7dc1eb108e3df0dec872b7429ef49f7'/>
<id>ce289321b7dc1eb108e3df0dec872b7429ef49f7</id>
<content type='text'>
It isn't used anymore, since AS was deleted.

Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It isn't used anymore, since AS was deleted.

Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>block: bdev_stack_limits wrapper</title>
<updated>2010-01-11T13:29:20+00:00</updated>
<author>
<name>Martin K. Petersen</name>
<email>martin.petersen@oracle.com</email>
</author>
<published>2010-01-11T08:21:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=17be8c245054b9c7786545af3ba3ca4e54cd4ad9'/>
<id>17be8c245054b9c7786545af3ba3ca4e54cd4ad9</id>
<content type='text'>
DM does not want to know about partition offsets.  Add a partition-aware
wrapper that DM can use when stacking block devices.

Signed-off-by: Martin K. Petersen &lt;martin.petersen@oracle.com&gt;
Acked-by: Mike Snitzer &lt;snitzer@redhat.com&gt;
Reviewed-by: Alasdair G Kergon &lt;agk@redhat.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
DM does not want to know about partition offsets.  Add a partition-aware
wrapper that DM can use when stacking block devices.

Signed-off-by: Martin K. Petersen &lt;martin.petersen@oracle.com&gt;
Acked-by: Mike Snitzer &lt;snitzer@redhat.com&gt;
Reviewed-by: Alasdair G Kergon &lt;agk@redhat.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>block: Fix discard alignment calculation and printing</title>
<updated>2010-01-11T13:29:19+00:00</updated>
<author>
<name>Martin K. Petersen</name>
<email>martin.petersen@oracle.com</email>
</author>
<published>2010-01-11T08:21:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=dd3d145d49c5816b79acc6761ebbd842bc50b0ee'/>
<id>dd3d145d49c5816b79acc6761ebbd842bc50b0ee</id>
<content type='text'>
Discard alignment reporting for partitions was incorrect.  Update to
match the algorithm used elsewhere.

The alignment can be negative (misaligned).  Fix format string
accordingly.

Signed-off-by: Martin K. Petersen &lt;martin.petersen@oracle.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Discard alignment reporting for partitions was incorrect.  Update to
match the algorithm used elsewhere.

The alignment can be negative (misaligned).  Fix format string
accordingly.

Signed-off-by: Martin K. Petersen &lt;martin.petersen@oracle.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>block: Correct handling of bottom device misaligment</title>
<updated>2010-01-11T13:29:19+00:00</updated>
<author>
<name>Martin K. Petersen</name>
<email>martin.petersen@oracle.com</email>
</author>
<published>2010-01-11T08:21:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=fe0b393f2c0a0d23a9bc9ed7dc51a1ee511098bd'/>
<id>fe0b393f2c0a0d23a9bc9ed7dc51a1ee511098bd</id>
<content type='text'>
The top device misalignment flag would not be set if the added bottom
device was already misaligned as opposed to causing a stacking failure.

Also massage the reporting so that an error is only returned if adding
the bottom device caused the misalignment.  I.e. don't return an error
if the top is already flagged as misaligned.

Signed-off-by: Martin K. Petersen &lt;martin.petersen@oracle.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The top device misalignment flag would not be set if the added bottom
device was already misaligned as opposed to causing a stacking failure.

Also massage the reporting so that an error is only returned if adding
the bottom device caused the misalignment.  I.e. don't return an error
if the top is already flagged as misaligned.

Signed-off-by: Martin K. Petersen &lt;martin.petersen@oracle.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
