• Cornelia Huck's avatar
    [S390] cio: Fix reference counting for online/offline. · 9cd67421
    Cornelia Huck authored
    The current code attempts to get an extra reference count
    for online devices by doing a get_device() in ccw_device_online()
    and a put_device() in ccw_device_done(). However, this
    - incorrectly obtains an extra reference for disconnected
      devices becoming available again (since they are already
      online)
    - needs special checks for css_init_done in order to handle
      the console device
    - is not obvious and
    - may incorretly drop a reference count in ccw_device_done() if
      that function is called after path verification for a device
      that just became not operational.
    
    So let's just get the reference in ccw_device_set_online() and
    drop it in ccw_device_set_offline(). (Unfortunately, we still
    need the special case in io_subchannel_probe().)
    Signed-off-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    9cd67421
device_fsm.c 33.2 KB