1. 11 12月, 2009 11 次提交
  2. 11 9月, 2009 1 次提交
  3. 05 9月, 2009 1 次提交
    • J
      dm raid1: do not allow log_failure variable to unset after being set · d2b69864
      Jonathan Brassow 提交于
      This patch fixes a bug which was triggering a case where the primary leg
      could not be changed on failure even when the mirror was in-sync.
      
      The case involves the failure of the primary device along with
      the transient failure of the log device.  The problem is that
      bios can be put on the 'failures' list (due to log failure)
      before 'fail_mirror' is called due to the primary device failure.
      Normally, this is fine, but if the log device failure is transient,
      a subsequent iteration of the work thread, 'do_mirror', will
      reset 'log_failure'.  The 'do_failures' function then resets
      the 'in_sync' variable when processing bios on the failures list.
      The 'in_sync' variable is what is used to determine if the
      primary device can be switched in the event of a failure.  Since
      this has been reset, the primary device is incorrectly assumed
      to be not switchable.
      
      The case has been seen in the cluster mirror context, where one
      machine realizes the log device is dead before the other machines.
      As the responsibilities of the server migrate from one node to
      another (because the mirror is being reconfigured due to the failure),
      the new server may think for a moment that the log device is fine -
      thus resetting the 'log_failure' variable.
      
      In any case, it is inappropiate for us to reset the 'log_failure'
      variable.  The above bug simply illustrates that it can actually
      hurt us.
      
      Cc: stable@kernel.org
      Signed-off-by: NJonathan Brassow <jbrassow@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      d2b69864
  4. 24 7月, 2009 2 次提交
  5. 22 6月, 2009 1 次提交
  6. 15 4月, 2009 1 次提交
  7. 03 4月, 2009 2 次提交
  8. 06 1月, 2009 3 次提交
  9. 14 11月, 2008 1 次提交
  10. 30 10月, 2008 1 次提交
  11. 22 10月, 2008 3 次提交
  12. 10 10月, 2008 1 次提交
    • J
      dm raid1: kcopyd should stop on error if errors handled · f7c83e2e
      Jonathan Brassow 提交于
      dm-raid1 is setting the 'DM_KCOPYD_IGNORE_ERROR' flag unconditionally
      when assigning kcopyd work.  kcopyd is responsible for copying an
      assigned section of disk to one or more other disks.  The
      'DM_KCOPYD_IGNORE_ERROR' flag affects kcopyd in the following way:
      
      When not set:
      kcopyd will immediately stop the copy operation when an error is
      encountered.
      
      When set:
      kcopyd will try to proceed regardless of errors and try to continue
      copying any remaining amount.
      
      Since dm-raid1 tracks regions of the address space that are (or
      are not) in sync and it now has the ability to handle these
      errors, we can safely enable this optimization.  This optimization
      is conditional on whether mirror error handling has been enabled.
      Signed-off-by: NJonathan Brassow <jbrassow@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      f7c83e2e
  13. 25 4月, 2008 8 次提交
  14. 29 3月, 2008 1 次提交
  15. 20 2月, 2008 1 次提交
  16. 14 2月, 2008 1 次提交
  17. 08 2月, 2008 1 次提交
    • J
      dm raid1: report fault status · af195ac8
      Jonathan Brassow 提交于
      This patch adds extra information to the mirror status output, so that
      it can be determined which device(s) have failed.  For each mirror device,
      a character is printed indicating the most severe error encountered.  The
      characters are:
       *    A => Alive - No failures
       *    D => Dead - A write failure occurred leaving mirror out-of-sync
       *    S => Sync - A sychronization failure occurred, mirror out-of-sync
       *    R => Read - A read failure occurred, mirror data unaffected
      This allows userspace to properly reconfigure the mirror set.
      Signed-off-by: NJonathan Brassow <jbrassow@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      af195ac8