<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/s390/block/dasd_alias.c, branch linux-4.8.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.8.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.8.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2016-03-17T12:18:25Z</updated>
<entry>
<title>s390/dasd: reorder lcu and device lock</title>
<updated>2016-03-17T12:18:25Z</updated>
<author>
<name>Stefan Haberland</name>
</author>
<published>2016-02-23T09:15:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=59a9ed5f87b6e396aed1f6bf7d6496f7ba66c37a'/>
<id>urn:sha1:59a9ed5f87b6e396aed1f6bf7d6496f7ba66c37a</id>
<content type='text'>
Reorder lcu and device lock to get rid of the error-prone trylock
mechanism.

The locking order is lcu lock -&gt; device lock.
This protects against changes to the lcu device lists and enables us
to iterate over the devices, take the cdev lock and make changes to
the device structures.

The complicated part is the summary unit check handler that gets an
interrupt on one device of the lcu that leads to structural changes of
the whole lcu itself. This work needs to be done even if devices on
the lcu disappear. So a device independent worker is used.
The old approach tried to update some lcu structures and set up the
lcu worker in the interrupt context with the device lock held.
But this forced the lock order "cdev lock -&gt; lcu lock" that made it
hard to have the lcu lock held and iterate over all devices and change
them.

The new approach is to schedule a device specific worker that gets
out of the interrupt context and rid of the device lock for summary
unit checks. This worker is able to take the lcu lock and schedule the
lcu worker that updates all devices. The time between interrupt and
worker execution is no problem because the devices in the lcu reject
all I/O in this time with an appropriate error. The dasd driver can
deal with this situation and re-drive the I/O later on.

Signed-off-by: Stefan Haberland &lt;sth@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/dasd: remove casts to dasd_*_private</title>
<updated>2016-03-07T12:12:02Z</updated>
<author>
<name>Sebastian Ott</name>
</author>
<published>2016-03-04T09:34:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=543691a4e1e040300ce6598a6ce6527d3144e5db'/>
<id>urn:sha1:543691a4e1e040300ce6598a6ce6527d3144e5db</id>
<content type='text'>
Convert dasd_device.private to be a void pointer to get
rid of a lot of explicit casts.

Signed-off-by: Sebastian Ott &lt;sebott@linux.vnet.ibm.com&gt;
Reviewed-by: Stefan Haberland &lt;sth@linux.vnet.ibm.com&gt;
Acked-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/dasd: fix incorrect locking order for LCU device add/remove</title>
<updated>2016-02-23T07:56:19Z</updated>
<author>
<name>Stefan Haberland</name>
</author>
<published>2015-12-15T10:00:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9bfefde718c1352d9499125bce50b2a0e8a3db4c'/>
<id>urn:sha1:9bfefde718c1352d9499125bce50b2a0e8a3db4c</id>
<content type='text'>
The correct lock order for LCU lock and cdev lock is to take the cdev
lock first and afterwards the LCU lock. This is caused by the fact
that LCU functions are called in an interrupt context with the cdev
lock implicitly hold by CIO.

To assure the right locking order but also be able to iterate over
devices in a LCU introduce a trylock block that can be called with
the device lock for one device hold and then takes the LCU lock and
try to lock all devices accounted to this LCU. Afterwards all devices
and the LCU itself are locked.

Signed-off-by: Stefan Haberland &lt;stefan.haberland@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/dasd: fix refcount for PAV reassignment</title>
<updated>2016-02-11T12:05:55Z</updated>
<author>
<name>Stefan Haberland</name>
</author>
<published>2015-12-15T09:45:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9d862ababb609439c5d6987f6d3ddd09e703aa0b'/>
<id>urn:sha1:9d862ababb609439c5d6987f6d3ddd09e703aa0b</id>
<content type='text'>
Add refcount to the DASD device when a summary unit check worker is
scheduled. This prevents that the device is set offline with worker
in place.

Cc: stable@vger.kernel.org
Signed-off-by: Stefan Haberland &lt;stefan.haberland@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/dasd: prevent incorrect length error under z/VM after PAV changes</title>
<updated>2016-02-11T12:05:53Z</updated>
<author>
<name>Stefan Haberland</name>
</author>
<published>2015-12-15T09:16:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=020bf042e5b397479c1174081b935d0ff15d1a64'/>
<id>urn:sha1:020bf042e5b397479c1174081b935d0ff15d1a64</id>
<content type='text'>
The channel checks the specified length and the provided amount of
data for CCWs and provides an incorrect length error if the size does
not match. Under z/VM with simulation activated the length may get
changed. Having the suppress length indication bit set is stated as
good CCW coding practice and avoids errors under z/VM.

Cc: stable@vger.kernel.org
Signed-off-by: Stefan Haberland &lt;stefan.haberland@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/dasd: fix list_del corruption after lcu changes</title>
<updated>2015-10-15T07:28:15Z</updated>
<author>
<name>Stefan Haberland</name>
</author>
<published>2015-10-14T09:01:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6933c35a307cad0b8b847042346dde68866d3d2a'/>
<id>urn:sha1:6933c35a307cad0b8b847042346dde68866d3d2a</id>
<content type='text'>
A summary unit check occurs when the lcu updates the PAV configuration
e.g. base PAV assignment or PAV mode at all. This requires the reset
of the drivers internal pavgroups. Therefore the alias devices are
flushed and moved via a temporary list to the active_devices list
where they are not associated with a pavgroup. In conjunction with
updates to the base device the pavgroup may be removed since both
base_list and alias_list are empty. Unfortunately during alias flush
and move to the active_device list from alias_list the pavgroup
pointer is not deleted in the device private structure. This leads to
a list del_corruption if another lcu_update tries to move the device
in the non existent pavgroup.

Fix by removing the pavgroup pointer after the alias device was moved
to the active_devices list.

Signed-off-by: Stefan Haberland &lt;stefan.haberland@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390: remove unneeded semicolon</title>
<updated>2015-08-07T07:57:00Z</updated>
<author>
<name>Peter Senna Tschudin</name>
</author>
<published>2015-08-04T15:11:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3b97487445ef3833fcb88ca4bb469b6df3b44329'/>
<id>urn:sha1:3b97487445ef3833fcb88ca4bb469b6df3b44329</id>
<content type='text'>
Remove unneeded semicolon.

The semantic patch that detects this change is available
at scripts/coccinelle/misc/semicolon.cocci.

Signed-off-by: Peter Senna Tschudin &lt;peter.senna@gmail.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>
</entry>
<entry>
<title>s390/dasd: fix kernel panic when alias is set offline</title>
<updated>2015-07-13T09:02:14Z</updated>
<author>
<name>Stefan Haberland</name>
</author>
<published>2015-07-10T08:47:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f81a49d13b3014c2b7c424628779a8af93f25c04'/>
<id>urn:sha1:f81a49d13b3014c2b7c424628779a8af93f25c04</id>
<content type='text'>
The dasd device driver selects which (alias or base) device is used
for a given requests when the request is build. If the chosen alias
device is set offline before the request gets queued to the device
queue the starting function may use device structures that are
already freed. This might lead to a hanging offline process or a
kernel panic.

Add a check to the starting function that returns the request to the
upper layer if the device is already in offline processing.

In addition to that prevent that an alias device that's already in
offline processing gets chosen as start device.

Reviewed-by: Sebastian Ott &lt;sebott@linux.vnet.ibm.com&gt;
Reviewed-by: Peter Oberparleiter &lt;peter.oberparleiter@linux.vnet.ibm.com&gt;
Signed-off-by: Stefan Haberland &lt;stefan.haberland@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/time: rename tod clock access functions</title>
<updated>2013-02-14T14:55:10Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2013-01-30T08:49:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1aae0560d160ee6ebef927a35e4f405306a079df'/>
<id>urn:sha1:1aae0560d160ee6ebef927a35e4f405306a079df</id>
<content type='text'>
Fix name clash with some common code device drivers and add "tod"
to all tod clock access function names.

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/dasd: fix read unit address configuration loop</title>
<updated>2012-09-17T07:58:21Z</updated>
<author>
<name>Stefan Haberland</name>
</author>
<published>2012-09-11T15:19:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=03429f34c22cedc3300a81e13d5790450cc468af'/>
<id>urn:sha1:03429f34c22cedc3300a81e13d5790450cc468af</id>
<content type='text'>
Read unit address is done for all devices during online processing to read
out LCU features. This is also done after disconnect/connect a LCU.
Some older storage hardware does not provide the capability to read unit
address configuration.
This leads to a loop trying to read unit address configuration every 30
seconds. The device is still operational but logs are flooded with error
messages.

Fix the loop by recognizing a command reject saying that the suborder
for ruac is not supported.

Signed-off-by: Stefan Haberland &lt;stefan.haberland@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
</feed>
