[Midnightbsd-cvs] [MidnightBSD/src] 91d57e: When scn->scn_maxinflight_bytes has not been initi...

Lucas Holt noreply at github.com
Sun Nov 15 02:04:29 EST 2020


  Branch: refs/heads/master
  Home:   https://github.com/MidnightBSD/src
  Commit: 91d57e1cd00c9d3ab09b0d0ca7f80dca4615e063
      https://github.com/MidnightBSD/src/commit/91d57e1cd00c9d3ab09b0d0ca7f80dca4615e063
  Author: Lucas Holt <luke at foolishgames.com>
  Date:   2020-11-15 (Sun, 15 Nov 2020)

  Changed paths:
    M sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c

  Log Message:
  -----------
  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.




More information about the Midnightbsd-cvs mailing list