[S390] Support for disconnected devices reappearing on another subchannel.
- create a 'pseudo_subchannel' per channel subsystem (the 'orphanage') - use the orphanage as a shelter for ccw_devices that can't remain on the same subchannel Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Cc: Greg KH <greg@kroah.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:

committed by
Martin Schwidefsky

parent
2ec2298412
commit
d7b5a4c94f
@@ -415,6 +415,8 @@ cio_enable_subchannel (struct subchannel *sch, unsigned int isc)
|
||||
CIO_TRACE_EVENT (2, "ensch");
|
||||
CIO_TRACE_EVENT (2, sch->dev.bus_id);
|
||||
|
||||
if (sch_is_pseudo_sch(sch))
|
||||
return -EINVAL;
|
||||
ccode = stsch (sch->schid, &sch->schib);
|
||||
if (ccode)
|
||||
return -ENODEV;
|
||||
@@ -462,6 +464,8 @@ cio_disable_subchannel (struct subchannel *sch)
|
||||
CIO_TRACE_EVENT (2, "dissch");
|
||||
CIO_TRACE_EVENT (2, sch->dev.bus_id);
|
||||
|
||||
if (sch_is_pseudo_sch(sch))
|
||||
return 0;
|
||||
ccode = stsch (sch->schid, &sch->schib);
|
||||
if (ccode == 3) /* Not operational. */
|
||||
return -ENODEV;
|
||||
@@ -496,7 +500,7 @@ cio_disable_subchannel (struct subchannel *sch)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int cio_create_sch_lock(struct subchannel *sch)
|
||||
int cio_create_sch_lock(struct subchannel *sch)
|
||||
{
|
||||
sch->lock = kmalloc(sizeof(spinlock_t), GFP_KERNEL);
|
||||
if (!sch->lock)
|
||||
|
Reference in New Issue
Block a user