]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC r318943 (avg):
authorgjb <gjb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Tue, 6 Jun 2017 14:46:45 +0000 (14:46 +0000)
committergjb <gjb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Tue, 6 Jun 2017 14:46:45 +0000 (14:46 +0000)
commit7cd6bacd26bc560171147da878b4687e83d726e0
tree8e7322404c32442a5775a65e5407e279d435e42b
parente5f6a144336e326864b0ef7b00ac8b2bfccd7540
MFC r318943 (avg):

 MFV r318942: 8166 zpool scrub thinks it repaired offline device

 https://www.illumos.org/issues/8166
  If we do a scrub while a leaf device is offline (via "zpool offline"),
  we will inadvertently clear the DTL (dirty time log) of the offline
  device, even though it is still damaged. When the device comes back
  online, we will incompletely resilver it, thinking that the scrub
  repaired blocks written before the scrub was started. The incomplete
  resilver can lead to data loss if there is a subsequent failure of a
  different leaf device.
  The fix is to never clear the DTL of offline devices. Note that if a
  device is onlined while a scrub is in progress, the scrub will be
  restarted.
  The problem can be worked around by running "zpool scrub" after
  "zpool online".
  See also https://github.com/zfsonlinux/zfs/issues/5806

PR: 219537
Sponsored by: The FreeBSD Foundation

git-svn-id: svn://svn.freebsd.org/base/stable/10@319625 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c