1. 23 6月, 2009 39 次提交
  2. 22 6月, 2009 1 次提交
    • S
      [S390] dasd: fix refcounting in dasd_change_state · 181d9522
      Sebastian Ott 提交于
      To set a dasd online dasd_change_state is called twice. The first
      cycle will schedule initial analysis of the device, set the rc to
      -EAGAIN and will not touch the device state any more.
      The initial analysis will in turn call dasd_change_state to increase
      the state to the final DASD_STATE_ONLINE.
      
      If the dasd_change_state on the second thread outruns the other one
      both finish with the state set to DASD_STATE_ONLINE and the device
      refcount will be decreased by 2.
      
      Fix this by leaving dasd_change_state on rc == -EAGAIN so that the
      refcount will always be decreased by 1.
      Signed-off-by: NSebastian Ott <sebott@linux.vnet.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      181d9522