zfs/module
Tom Caputi 5815f7ac30 Fix stalled txg with repeated noop scans
Currently, the DSL scan code figures out when it should suspend
processing and allow a txg to continue by calling the function
dsl_scan_check_suspend(). Unfortunately, this function only
allows the scan to suspend at a level 0 block. In the event that
the system is scanning a bunch of empty snapshots or a resilver
is running with a high enough scn_cur_min_txg, the scan will
stop processing each dataset at the root level, deciding it
has nothing left to do. This means that the check_suspend
function is never called and the txg remains stuck until a
dataset is found that has data to scan.

This patch fixes the problem by allowing scans to suspend at
the root level of the objset. For backwards compatibility, we
use the bookmark <objsetid, 0, 0, 0> when we suspend here so
that older versions of the code will work as intended.

Reviewed-by: Matt Ahrens <matt@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tom Caputi <tcaputi@datto.com>
Closes #9300
2019-09-11 11:16:48 -07:00
..
avl Fix typos in module/ 2019-08-30 14:32:18 -07:00
icp OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
lua Fix typos in module/ 2019-08-30 14:32:18 -07:00
nvpair Fix typos in module/ 2019-08-30 14:32:18 -07:00
os Enable SIMD for encryption 2019-09-10 10:45:46 -07:00
spl OpenZFS restructuring - move platform specific sources 2019-09-06 11:26:26 -07:00
unicode Update build system and packaging 2018-05-29 16:00:33 -07:00
zcommon Make module tunables cross platform 2019-09-05 14:49:49 -07:00
zfs Fix stalled txg with repeated noop scans 2019-09-11 11:16:48 -07:00
.gitignore Prepare SPL repo to merge with ZFS repo 2018-05-29 14:51:39 -07:00
Makefile.in OpenZFS restructuring - move platform specific sources 2019-09-06 11:26:26 -07:00