Go to file
John Poduska c161360dce Resilver restarts unnecessarily when it encounters errors
When a resilver finishes, vdev_dtl_reassess is called to hopefully
excise DTL_MISSING (amongst other things). If there are errors during
the resilver, they are tracked in DTL_SCRUB, as spelled out in the
block comment in vdev.c. DTL_SCRUB is in-core only, so it can only
be used if the pool was online for the whole resilver. This state is
tracked with the spa_scrub_started flag, which only gets set when
the scan is initialized. Unfortunately, this flag gets cleared right
before vdev_dtl_reassess gets called, so if there are any errors
during the scan, DTL_MISSING will never get excised and the resilver
will just continually restart. This fix simply moves clearing that
flag until after the call to vdev_dtl_reasses.

In addition, if a pool is imported and already has scn_errors > 0,
this change will restart the resilver immediately instead of doing
the rest of the scan and then restarting it from the beginning. On
the other hand, if scn_errors == 0 at import, then no errors have
been encountered so far, so the spa_scrub_started flag can be safely
set.

A test has been added to verify that resilver does not restart when
relevant DTL's are available.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Paul Zuchowski <pzuchowski@datto.com>
Signed-off-by: John Poduska <jpoduska@datto.com>
Closes #10291
2020-09-22 11:33:35 -07:00
.github Fix typos 2020-01-22 13:49:00 -08:00
cmd ZED: Do not offline a missing device if no spare is available 2020-09-16 14:48:22 -07:00
config Linux 5.9 compat: NR_SLAB_RECLAIMABLE (#10865) 2020-09-15 21:16:58 +00:00
contrib Fix zfs-functions packaging bug 2020-05-12 10:53:32 -07:00
etc Fix zfs-functions packaging bug 2020-05-12 10:53:32 -07:00
include Appease GCC sprintf warnings found on Fedora 32/GCC 10.0.1 2020-09-15 23:43:12 +00:00
lib Appease GCC sprintf warnings found on Fedora 32/GCC 10.0.1 2020-09-15 23:43:12 +00:00
man ICP: Improve AES-GCM performance 2020-05-12 10:53:32 -07:00
module Resilver restarts unnecessarily when it encounters errors 2020-09-22 11:33:35 -07:00
rpm lib/libzfs, rpm: Install pkgconfig files in the correct directory (#10628) 2020-09-15 21:16:58 +00:00
scripts Fix typos 2020-01-22 13:49:00 -08:00
tests Resilver restarts unnecessarily when it encounters errors 2020-09-22 11:33:35 -07:00
udev Restore :: in Makefile.am 2020-05-12 10:53:32 -07:00
.gitignore Adapt gitignore for modules 2020-01-22 13:49:05 -08:00
.gitmodules Add zimport.sh compatibility test script 2014-02-21 12:10:31 -08:00
.travis.yml Add .travis.yml 2017-11-13 09:18:18 -08:00
AUTHORS Linux 5.9 compat: add linux/blkdev.h include 2020-09-15 21:16:58 +00:00
autogen.sh Cause autogen.sh to fail if autoreconf fails 2018-07-06 09:27:37 -07:00
CODE_OF_CONDUCT.md Add CODE_OF_CONDUCT.md 2019-04-30 10:58:45 -07:00
configure.ac Fix zfs-functions packaging bug 2020-05-12 10:53:32 -07:00
copy-builtin Allow copy-builtin to work with modified sources 2018-10-17 12:06:05 -07:00
COPYRIGHT ICP: Improve AES-GCM performance 2020-05-12 10:53:32 -07:00
LICENSE Update build system and packaging 2018-05-29 16:00:33 -07:00
Makefile.am Perform KABI checks in parallel 2020-01-22 13:49:01 -08:00
META Tag zfs-0.8.4 2020-05-12 10:53:32 -07:00
NEWS Add NEWS file 2018-09-18 12:03:47 -07:00
NOTICE Update build system and packaging 2018-05-29 16:00:33 -07:00
README.md Explicitly state supported Linux versions 2018-05-30 20:11:19 -07:00
TEST Update build system and packaging 2018-05-29 16:00:33 -07:00
zfs.release.in Move zfs.release generation to configure step 2012-07-12 12:22:51 -07:00

img

ZFS on Linux is an advanced file system and volume manager which was originally developed for Solaris and is now maintained by the OpenZFS community.

codecov coverity

Official Resources

Installation

Full documentation for installing ZoL on your favorite Linux distribution can be found at our site.

Contribute & Develop

We have a separate document with contribution guidelines.

Release

ZFS on Linux is released under a CDDL license.
For more details see the NOTICE, LICENSE and COPYRIGHT files; UCRL-CODE-235197

Supported Kernels

  • The META file contains the officially recognized supported kernel versions.