<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/s390/block, branch v2.6.25.4</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>[S390] dasd: fix reference counting in display method for proc/dasd/devices</title>
<updated>2008-03-05T11:37:18+00:00</updated>
<author>
<name>Stefan Weinhuber</name>
<email>wein@de.ibm.com</email>
</author>
<published>2008-03-05T11:37:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a5e2383991ee985332854b721ba3e5abbbabf0f2'/>
<id>a5e2383991ee985332854b721ba3e5abbbabf0f2</id>
<content type='text'>
Using the /proc/dasd/devices interface leaves the reference counter
of alias devices in an inconsistent state. A process that tries to set
such a device offline afterwards will hang.
The dasd_devices_show function returns immediately for alias devices
and this code path was missing a dasd_put_device call.

Signed-off-by: Stefan Weinhuber &lt;wein@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Using the /proc/dasd/devices interface leaves the reference counter
of alias devices in an inconsistent state. A process that tries to set
such a device offline afterwards will hang.
The dasd_devices_show function returns immediately for alias devices
and this code path was missing a dasd_put_device call.

Signed-off-by: Stefan Weinhuber &lt;wein@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[S390] dasd: let dasd erp matching recognize alias recovery</title>
<updated>2008-03-05T11:37:18+00:00</updated>
<author>
<name>Stefan Weinhuber</name>
<email>wein@de.ibm.com</email>
</author>
<published>2008-03-05T11:37:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5c12f2406cea24a2c885a8d3e5aa7ab94c65f0d5'/>
<id>5c12f2406cea24a2c885a8d3e5aa7ab94c65f0d5</id>
<content type='text'>
When a request fails that was started on an alias device then the
first recovery step is to retry it on the base device. If the
recovery request fails again with the same symptoms, the next step
should not be a simple retry, but should be a proper recovery based
on sense data, etc. To do so, the dasd recovery functions need to
recognize the alias recovery step in the erp chain by comparing
the start devices.

Signed-off-by: Stefan Weinhuber &lt;wein@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a request fails that was started on an alias device then the
first recovery step is to retry it on the base device. If the
recovery request fails again with the same symptoms, the next step
should not be a simple retry, but should be a proper recovery based
on sense data, etc. To do so, the dasd recovery functions need to
recognize the alias recovery step in the erp chain by comparing
the start devices.

Signed-off-by: Stefan Weinhuber &lt;wein@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[S390] dcss: Fix Unlikely(x) != y</title>
<updated>2008-02-19T14:29:35+00:00</updated>
<author>
<name>Roel Kluin</name>
<email>12o3l@tiscali.nl</email>
</author>
<published>2008-02-19T14:29:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=39f73b2886be3a255d8f4cd669c8c7e7957afbd9'/>
<id>39f73b2886be3a255d8f4cd669c8c7e7957afbd9</id>
<content type='text'>
Fix Unlikely(x) != y

Cc: Gerald Schaefer &lt;geraldsc@de.ibm.com&gt;
Cc: Stefan Weinhuber &lt;wein@de.ibm.com&gt;
Cc: Carsten Otte &lt;cotte@de.ibm.com&gt;
Signed-off-by: Roel Kluin &lt;12o3l@tiscali.nl&gt;
Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix Unlikely(x) != y

Cc: Gerald Schaefer &lt;geraldsc@de.ibm.com&gt;
Cc: Stefan Weinhuber &lt;wein@de.ibm.com&gt;
Cc: Carsten Otte &lt;cotte@de.ibm.com&gt;
Signed-off-by: Roel Kluin &lt;12o3l@tiscali.nl&gt;
Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[S390] dasd: fix locking in __dasd_device_process_final_queue</title>
<updated>2008-02-19T14:29:33+00:00</updated>
<author>
<name>Stefan Weinhuber</name>
<email>wein@de.ibm.com</email>
</author>
<published>2008-02-19T14:29:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=03513bccad33667ed738cfd96dc5757e539e0bdb'/>
<id>03513bccad33667ed738cfd96dc5757e539e0bdb</id>
<content type='text'>
After setting the status of the cqr and releasing the lock for the
block cqr queue, we call the cqr callback function, which will usually
just trigger the dasd_block_tasklet. But when the tasklet is already
running the cqr might be processed before we invoke the callback
function. In rare cases the callback pointer may already be invalid
by the time we want to call it, which will result in a panic.
Solution: Call the callback function first and then release the lock.

Signed-off-by: Stefan Weinhuber &lt;wein@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
After setting the status of the cqr and releasing the lock for the
block cqr queue, we call the cqr callback function, which will usually
just trigger the dasd_block_tasklet. But when the tasklet is already
running the cqr might be processed before we invoke the callback
function. In rare cases the callback pointer may already be invalid
by the time we want to call it, which will result in a panic.
Solution: Call the callback function first and then release the lock.

Signed-off-by: Stefan Weinhuber &lt;wein@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[S390] dcss: Initialize workqueue before using it.</title>
<updated>2008-02-05T15:51:01+00:00</updated>
<author>
<name>Heiko Carstens</name>
<email>heiko.carstens@de.ibm.com</email>
</author>
<published>2008-02-05T15:50:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=c5411dba58c28736d25cffef65da1e01ed7d1423'/>
<id>c5411dba58c28736d25cffef65da1e01ed7d1423</id>
<content type='text'>
In case a dcss segment cannot be loaded blk_cleanup_queue
will be called before blk_queue_make_request, leaving the
struct work unplug_work of the request queue uninitialized
before it is used.
That leads also to the lockdep message below.
To avoid that call blk_queue_make_request right after the
request_queue has been allocated.
This makes sure that the struct work is always initialized
before it is used.

INFO: trying to register non-static key.
the code is fine but needs lockdep annotation.
turning off the locking correctness validator.
CPU: 2 Not tainted 2.6.24 #6
Process swapper (pid: 1, task: 000000000f854038, ksp: 000000000f85f980)
040000000f85f860 000000000f85f880 0000000000000002 0000000000000000
       000000000f85f920 000000000f85f898 000000000f85f898 000000000001622e
       0000000000000000 000000000f85f980 0000000000000000 0000000000000000
       000000000f85f880 000000000000000c 000000000f85f880 000000000f85f8f0
       0000000000342908 000000000001622e 000000000f85f880 000000000f85f8d0
Call Trace:
([&lt;000000000001619e&gt;] show_trace+0xda/0x104)
 [&lt;0000000000016288&gt;] show_stack+0xc0/0xf8
 [&lt;00000000000163d0&gt;] dump_stack+0xb0/0xc0
 [&lt;000000000006e4ea&gt;] __lock_acquire+0x47e/0x1160
 [&lt;000000000006f27c&gt;] lock_acquire+0xb0/0xd8
 [&lt;000000000005a522&gt;] __cancel_work_timer+0x9e/0x240
 [&lt;000000000005a72e&gt;] cancel_work_sync+0x2a/0x3c
 [&lt;0000000000165c46&gt;] kblockd_flush_work+0x26/0x34
 [&lt;0000000000169034&gt;] blk_sync_queue+0x38/0x48
 [&lt;0000000000169080&gt;] blk_release_queue+0x3c/0xa8
 [&lt;000000000017bce8&gt;] kobject_cleanup+0x58/0xac
 [&lt;000000000017bd66&gt;] kobject_release+0x2a/0x38
 [&lt;000000000017d28e&gt;] kref_put+0x6e/0x94
 [&lt;000000000017bc80&gt;] kobject_put+0x38/0x48
 [&lt;00000000001653be&gt;] blk_put_queue+0x2a/0x38
 [&lt;0000000000168fee&gt;] blk_cleanup_queue+0x82/0x90
 [&lt;0000000000213e7e&gt;] dcssblk_add_store+0x34e/0x700
 [&lt;00000000005243b8&gt;] dcssblk_init+0x1a0/0x308
 [&lt;000000000050a3c2&gt;] kernel_init+0x1b2/0x3a4
 [&lt;000000000001ac82&gt;] kernel_thread_starter+0x6/0xc
 [&lt;000000000001ac7c&gt;] kernel_thread_starter+0x0/0xc

INFO: lockdep is turned off.

Cc: Gerald Schaefer &lt;geraldsc@de.ibm.com&gt;
Cc: Carsten Otte &lt;cotte@de.ibm.com&gt;
Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In case a dcss segment cannot be loaded blk_cleanup_queue
will be called before blk_queue_make_request, leaving the
struct work unplug_work of the request queue uninitialized
before it is used.
That leads also to the lockdep message below.
To avoid that call blk_queue_make_request right after the
request_queue has been allocated.
This makes sure that the struct work is always initialized
before it is used.

INFO: trying to register non-static key.
the code is fine but needs lockdep annotation.
turning off the locking correctness validator.
CPU: 2 Not tainted 2.6.24 #6
Process swapper (pid: 1, task: 000000000f854038, ksp: 000000000f85f980)
040000000f85f860 000000000f85f880 0000000000000002 0000000000000000
       000000000f85f920 000000000f85f898 000000000f85f898 000000000001622e
       0000000000000000 000000000f85f980 0000000000000000 0000000000000000
       000000000f85f880 000000000000000c 000000000f85f880 000000000f85f8f0
       0000000000342908 000000000001622e 000000000f85f880 000000000f85f8d0
Call Trace:
([&lt;000000000001619e&gt;] show_trace+0xda/0x104)
 [&lt;0000000000016288&gt;] show_stack+0xc0/0xf8
 [&lt;00000000000163d0&gt;] dump_stack+0xb0/0xc0
 [&lt;000000000006e4ea&gt;] __lock_acquire+0x47e/0x1160
 [&lt;000000000006f27c&gt;] lock_acquire+0xb0/0xd8
 [&lt;000000000005a522&gt;] __cancel_work_timer+0x9e/0x240
 [&lt;000000000005a72e&gt;] cancel_work_sync+0x2a/0x3c
 [&lt;0000000000165c46&gt;] kblockd_flush_work+0x26/0x34
 [&lt;0000000000169034&gt;] blk_sync_queue+0x38/0x48
 [&lt;0000000000169080&gt;] blk_release_queue+0x3c/0xa8
 [&lt;000000000017bce8&gt;] kobject_cleanup+0x58/0xac
 [&lt;000000000017bd66&gt;] kobject_release+0x2a/0x38
 [&lt;000000000017d28e&gt;] kref_put+0x6e/0x94
 [&lt;000000000017bc80&gt;] kobject_put+0x38/0x48
 [&lt;00000000001653be&gt;] blk_put_queue+0x2a/0x38
 [&lt;0000000000168fee&gt;] blk_cleanup_queue+0x82/0x90
 [&lt;0000000000213e7e&gt;] dcssblk_add_store+0x34e/0x700
 [&lt;00000000005243b8&gt;] dcssblk_init+0x1a0/0x308
 [&lt;000000000050a3c2&gt;] kernel_init+0x1b2/0x3a4
 [&lt;000000000001ac82&gt;] kernel_thread_starter+0x6/0xc
 [&lt;000000000001ac7c&gt;] kernel_thread_starter+0x0/0xc

INFO: lockdep is turned off.

Cc: Gerald Schaefer &lt;geraldsc@de.ibm.com&gt;
Cc: Carsten Otte &lt;cotte@de.ibm.com&gt;
Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[S390] dasd: fix panic caused by alias device offline</title>
<updated>2008-02-05T15:51:00+00:00</updated>
<author>
<name>Stefan Weinhuber</name>
<email>wein@de.ibm.com</email>
</author>
<published>2008-02-05T15:50:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=fe6b8e76d920b93fd445382aff7ff24082af8874'/>
<id>fe6b8e76d920b93fd445382aff7ff24082af8874</id>
<content type='text'>
When an alias device is set offline while it is in use this may
result in a panic in the cleanup part of the dasd_block_tasklet.
The problem here is that there may exist some ccw requests that were
originally created for the alias device and transferred to the base
device when the alias was set offline. When these request are
cleaned up later, the discipline pointer in the alias device may not
be valid anymore. To fix this use the base device discipline to find
the cleanup function.

Signed-off-by: Stefan Weinhuber &lt;wein@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When an alias device is set offline while it is in use this may
result in a panic in the cleanup part of the dasd_block_tasklet.
The problem here is that there may exist some ccw requests that were
originally created for the alias device and transferred to the base
device when the alias was set offline. When these request are
cleaned up later, the discipline pointer in the alias device may not
be valid anymore. To fix this use the base device discipline to find
the cleanup function.

Signed-off-by: Stefan Weinhuber &lt;wein@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[S390] dasd: add ifcc handling</title>
<updated>2008-02-05T15:50:59+00:00</updated>
<author>
<name>Stefan Haberland</name>
<email>stefan.haberland@de.ibm.com</email>
</author>
<published>2008-02-05T15:50:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6c5f57c7884a7e0806ae9af86de243321cab4953'/>
<id>6c5f57c7884a7e0806ae9af86de243321cab4953</id>
<content type='text'>
Adding interface control check (ifcc) handling in error recovery.
First retry up to 255 times and if all retries fail try an alternate
path if possible.

Signed-off-by: Stefan Haberland &lt;stefan.haberland@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adding interface control check (ifcc) handling in error recovery.
First retry up to 255 times and if all retries fail try an alternate
path if possible.

Signed-off-by: Stefan Haberland &lt;stefan.haberland@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>blk_end_request: changing s390 (take 4)</title>
<updated>2008-01-28T09:36:54+00:00</updated>
<author>
<name>Kiyoshi Ueda</name>
<email>k-ueda@ct.jp.nec.com</email>
</author>
<published>2008-01-28T09:29:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=4c4e21486154c8db93c7e82a4b3ab5f621cd1d97'/>
<id>4c4e21486154c8db93c7e82a4b3ab5f621cd1d97</id>
<content type='text'>
This patch converts s390 to use blk_end_request interfaces.
Related 'uptodate' arguments are converted to 'error'.

As a result, the interfaces of internal functions below are changed:
  o dasd_end_request
  o tapeblock_end_request

Cc: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
Cc: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Cc: linux390@de.ibm.com
Signed-off-by: Kiyoshi Ueda &lt;k-ueda@ct.jp.nec.com&gt;
Signed-off-by: Jun'ichi Nomura &lt;j-nomura@ce.jp.nec.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>
This patch converts s390 to use blk_end_request interfaces.
Related 'uptodate' arguments are converted to 'error'.

As a result, the interfaces of internal functions below are changed:
  o dasd_end_request
  o tapeblock_end_request

Cc: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
Cc: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Cc: linux390@de.ibm.com
Signed-off-by: Kiyoshi Ueda &lt;k-ueda@ct.jp.nec.com&gt;
Signed-off-by: Jun'ichi Nomura &lt;j-nomura@ce.jp.nec.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[S390] usage of s390dbf: shrink number of debug areas to use.</title>
<updated>2008-01-26T13:11:33+00:00</updated>
<author>
<name>Peter Tiedemann</name>
<email>ptiedem@de.ibm.com</email>
</author>
<published>2008-01-26T13:11:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=361f494d4e62ee5f7a971bf34945deeb69392159'/>
<id>361f494d4e62ee5f7a971bf34945deeb69392159</id>
<content type='text'>
Signed-off-by: Peter Tiedemann &lt;ptiedem@de.ibm.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Peter Tiedemann &lt;ptiedem@de.ibm.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[S390] constify function pointer tables.</title>
<updated>2008-01-26T13:11:32+00:00</updated>
<author>
<name>Jan Engelhardt</name>
<email>jengelh@computergmbh.de</email>
</author>
<published>2008-01-26T13:11:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5c81cdbeff72e7fc2eb62ee5dc26197e54f9a06c'/>
<id>5c81cdbeff72e7fc2eb62ee5dc26197e54f9a06c</id>
<content type='text'>
Signed-off-by: Jan Engelhardt &lt;jengelh@computergmbh.de&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Jan Engelhardt &lt;jengelh@computergmbh.de&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
