<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/block, branch v2.6.32.1</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/block?h=v2.6.32.1</id>
<link rel='self' href='https://git.amat.us/linux/atom/block?h=v2.6.32.1'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2009-11-03T19:25:02Z</updated>
<entry>
<title>cfq-iosched: limit coop preemption</title>
<updated>2009-11-03T19:25:02Z</updated>
<author>
<name>Shaohua Li</name>
<email>shaohua.li@intel.com</email>
</author>
<published>2009-11-03T19:25:02Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=4b27e1bb442e964903f8a3fa6bdf33a602dc0941'/>
<id>urn:sha1:4b27e1bb442e964903f8a3fa6bdf33a602dc0941</id>
<content type='text'>
CFQ has an optimization for cooperated applications. if several
io-context have close requests, they will get boost. But the
optimization get abused. Considering thread a, b, which work on one
file. a reads sectors s, s+2, s+4, ...; b reads sectors s+1, s+3, s
+5, ... Both a and b are sequential read, so they can open idle window.
a reads a sector s and goes to idle window and wakeup b. b reads sector
s+1, since in current implementation, cfq_should_preempt() thinks a and
b are cooperators, b will preempt a. b then reads sector s+1 and goes to
idle window and wakeup a. for the same reason, a will preempt b and
reads s+2. a and b will continue the circle. The circle will be very
long, and a and b will occupy whole disk queue. Other applications will
nearly have no chance to run.

Fix this limiting coop preempt until a queue is scheduled normally
again.

Signed-off-by: Shaohua Li &lt;shaohua.li@intel.com&gt;
Acked-by: Jeff Moyer &lt;jmoyer@redhat.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>cfq-iosched: fix bad return value cfq_should_preempt()</title>
<updated>2009-11-03T19:21:35Z</updated>
<author>
<name>Jens Axboe</name>
<email>jens.axboe@oracle.com</email>
</author>
<published>2009-11-03T19:21:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e6ec4fe24572ee265723d895ec4159e5559c8266'/>
<id>urn:sha1:e6ec4fe24572ee265723d895ec4159e5559c8266</id>
<content type='text'>
Commit a6151c3a5c8e1ff5a28450bc8d6a99a2a0add0a7 inadvertently reversed
a preempt condition check, potentially causing a performance regression.
Make the meta check correct again.

Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>block: silently error unsupported empty barriers too</title>
<updated>2009-10-24T12:14:31Z</updated>
<author>
<name>Mark McLoughlin</name>
<email>markmc@redhat.com</email>
</author>
<published>2009-10-24T12:14:31Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6cafb12dc85a5bdc722791cc5070968413264909'/>
<id>urn:sha1:6cafb12dc85a5bdc722791cc5070968413264909</id>
<content type='text'>
With 2.6.32-rc5 in a KVM guest using dm and virtio_blk, we see the
following errors:

  end_request: I/O error, dev vda, sector 0
  end_request: I/O error, dev vda, sector 0

The errors go away if dm stops submitting empty barriers, by reverting:

  commit 52b1fd5a27c625c78373e024bf570af3c9d44a79
  Author: Mikulas Patocka &lt;mpatocka@redhat.com&gt;
    dm: send empty barriers to targets in dm_flush

We should silently error all barriers, even empty barriers, on devices
like virtio_blk which don't support them.

See also:

  https://bugzilla.redhat.com/514901

Signed-off-by: Mark McLoughlin &lt;markmc@redhat.com&gt;
Signed-off-by: Mike Snitzer &lt;snitzer@redhat.com&gt;
Acked-by: Alasdair G Kergon &lt;agk@redhat.com&gt;
Acked-by: Mikulas Patocka &lt;mpatocka@redhat.com&gt;
Cc: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
Cc: Neil Brown &lt;neilb@suse.de&gt;
Cc: Christoph Hellwig &lt;hch@infradead.org&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>blk-settings: fix function parameter kernel-doc notation</title>
<updated>2009-10-12T06:20:47Z</updated>
<author>
<name>Randy Dunlap</name>
<email>randy.dunlap@oracle.com</email>
</author>
<published>2009-10-12T06:20:47Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c7ebf0657b1f47d85aee8349ed6345d940d7232a'/>
<id>urn:sha1:c7ebf0657b1f47d85aee8349ed6345d940d7232a</id>
<content type='text'>
Fix kernel-doc notation in blk-settings.c::blk_queue_max_discard_sectors().

Signed-off-by: Randy Dunlap &lt;randy.dunlap@oracle.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>elv_iosched_store(): fix strstrip() misuse</title>
<updated>2009-10-09T06:48:08Z</updated>
<author>
<name>KOSAKI Motohiro</name>
<email>kosaki.motohiro@jp.fujitsu.com</email>
</author>
<published>2009-10-09T06:48:08Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=8c279598585e4992a41016bb973993ed15888cb3'/>
<id>urn:sha1:8c279598585e4992a41016bb973993ed15888cb3</id>
<content type='text'>
elv_iosched_store() ignore the return value of strstrip().  It makes small
inconsistent behavior.

This patch fixes it.

 &lt;before&gt;
 ====================================
 # cd /sys/block/{blockdev}/queue

 case1:
 # echo "anticipatory" &gt; scheduler
 # cat scheduler
 noop [anticipatory] deadline cfq

 case2:
 # echo "anticipatory " &gt; scheduler
 # cat scheduler
 noop [anticipatory] deadline cfq

 case3:
 # echo " anticipatory" &gt; scheduler
 bash: echo: write error: Invalid argument

 &lt;after&gt;
 ====================================
 # cd /sys/block/{blockdev}/queue

 case1:
 # echo "anticipatory" &gt; scheduler
 # cat scheduler
 noop [anticipatory] deadline cfq

 case2:
 # echo "anticipatory " &gt; scheduler
 # cat scheduler
 noop [anticipatory] deadline cfq

 case3:
 # echo " anticipatory" &gt; scheduler
 noop [anticipatory] deadline cfq

Cc: Li Zefan &lt;lizf@cn.fujitsu.com&gt;
Cc: Jens Axboe &lt;jens.axboe@oracle.com&gt;
Signed-off-by: KOSAKI Motohiro &lt;kosaki.motohiro@jp.fujitsu.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>cfq-iosched: avoid probable slice overrun when idling</title>
<updated>2009-10-08T06:43:32Z</updated>
<author>
<name>Corrado Zoccolo</name>
<email>czoccolo@gmail.com</email>
</author>
<published>2009-10-08T06:43:32Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=355b659c87432a4e76160640625c47fcf9174e8d'/>
<id>urn:sha1:355b659c87432a4e76160640625c47fcf9174e8d</id>
<content type='text'>
If the average think time is larger than the remaining time slice
for any given queue, don't allow it to idle. A succesful idle also
means that we need to dispatch and complete a request, so if we don't
even have time left for the idle process, we would overrun the slice
in any case.

Signed-off-by: Corrado Zoccolo &lt;czoccolo@gmail.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>cfq-iosched: apply bool value where we return 0/1</title>
<updated>2009-10-07T18:02:57Z</updated>
<author>
<name>Jens Axboe</name>
<email>jens.axboe@oracle.com</email>
</author>
<published>2009-10-07T18:02:57Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a6151c3a5c8e1ff5a28450bc8d6a99a2a0add0a7'/>
<id>urn:sha1:a6151c3a5c8e1ff5a28450bc8d6a99a2a0add0a7</id>
<content type='text'>
Saves 16 bytes of text, woohoo. But the more important point is
that it makes the code more readable when returning bool for 0/1
cases.

Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>cfq-iosched: fix think time allowed for seekers</title>
<updated>2009-10-07T17:51:54Z</updated>
<author>
<name>Corrado Zoccolo</name>
<email>czoccolo@gmail.com</email>
</author>
<published>2009-10-07T17:51:54Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ec60e4f6749daf535329dac571293cf19c627aff'/>
<id>urn:sha1:ec60e4f6749daf535329dac571293cf19c627aff</id>
<content type='text'>
CFQ enables idle only for processes that think less than the allowed
idle time. Since idle time is lower for seeky queues, we should use the
correct value in the comparison.

Signed-off-by: Corrado Zoccolo &lt;czoccolo@gmail.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>cfq-iosched: fix the slice residual sign</title>
<updated>2009-10-06T19:09:32Z</updated>
<author>
<name>Jens Axboe</name>
<email>jens.axboe@oracle.com</email>
</author>
<published>2009-10-06T18:53:44Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b9c8946b192397394a0ccd4fcecb31bc060f79f8'/>
<id>urn:sha1:b9c8946b192397394a0ccd4fcecb31bc060f79f8</id>
<content type='text'>
We should subtract the slice residual from the rb tree key, since
a negative residual count indicates that the cfqq overran its slice
the last time. Hence we want to add the overrun time, to position
it a bit further away in the service tree.

Reported-by: Corrado Zoccolo &lt;czoccolo@gmail.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>cfq-iosched: abstract out the 'may this cfqq dispatch' logic</title>
<updated>2009-10-06T18:49:37Z</updated>
<author>
<name>Jens Axboe</name>
<email>jens.axboe@oracle.com</email>
</author>
<published>2009-10-06T18:49:37Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0b182d617eb50762b483658dd6dd9a9fbcb25758'/>
<id>urn:sha1:0b182d617eb50762b483658dd6dd9a9fbcb25758</id>
<content type='text'>
Makes the whole thing easier to read, cfq_dispatch_requests() was
a bit messy before.

Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
</feed>
