diff options
author | Brian Behlendorf <[email protected]> | 2018-01-31 09:33:33 -0800 |
---|---|---|
committer | GitHub <[email protected]> | 2018-01-31 09:33:33 -0800 |
commit | f90a30ad1b32a971f62a540f8944e42f99b254ce (patch) | |
tree | be89a5aeb59e7bc3161842adc899a0f13d4ee310 /include/sys/dnode.h | |
parent | 1d8a71b603769214a73bc9720107c4bd97206bff (diff) |
Fix txg_sync_thread hang in scan_exec_io()
When scn->scn_maxinflight_bytes has not been initialized it's
possible to hang on the condition variable in scan_exec_io().
This issue was uncovered by ztest and is only possible when
deduplication is enabled through the following call path.
txg_sync_thread()
spa_sync()
ddt_sync_table()
ddt_sync_entry()
dsl_scan_ddt_entry()
dsl_scan_scrub_cb()
dsl_scan_enqueuei()
scan_exec_io()
cv_wait()
Resolve the issue by always initializing scn_maxinflight_bytes
to a reasonable minimum value. This value will be recalculated
in dsl_scan_sync() to pick up changes to zfs_scan_vdev_limit
and the addition/removal of vdevs.
Reviewed-by: Tom Caputi <[email protected]>
Reviewed by: George Melikov <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #7098
Diffstat (limited to 'include/sys/dnode.h')
0 files changed, 0 insertions, 0 deletions