On Fri, 22 Sep 2023 14:25:58 +0200 Cornelia Huck <cohuck@xxxxxxxxxx> wrote: > > - spin_lock_init(&sch->lock); > > + sch->schid = schid; > > + if (cio_is_console(schid)) { > > + sch->lock = cio_get_console_lock(); > > + } else { > > + err = cio_create_sch_lock(sch); > > + if (err) > > + goto out; > > + } > > > > I did not spend a huge amount of time looking at this but this > > is the only reason I found for sch->lock being made a pointer. There may > > be others, I'm just saying that is all I've found. > > Author of 2ec2298412e1 here. If I don't completely misremember things, > this was for the orphanage stuff (i.e. ccw devices that were still kept > as disconnected, like dasd still in use, that had to be moved from their > old subchannel object because a different device appeared on that > subchannel.) That orphanage used a single dummy subchannel for all ccw > devices moved there. > > I have no idea how the current common I/O layer works, but that might > give you a hint about what to look for :) Yes, that is what the commit states and what the series is about. I hope Vineeth can give us some answers :) maybe even out of the top of his head... If not, I would trust his judgment on whether figuring things out is worthwhile or not. Regards, Halil