diff options
author | Tom Caputi <[email protected]> | 2019-04-25 13:16:24 -0400 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2019-04-25 10:16:24 -0700 |
commit | f4c594da94d856c422512a54e48070f890b2685b (patch) | |
tree | 4d8ef38193df1f81ad33e7e02a005c11113ac491 /config/kernel-ctl-table-name.m4 | |
parent | 2b127afb44d11bfddaf8ed95be18c7aefe7ea5de (diff) |
Fixes for the DMU free throttle
This patch fixes 2 issues with the DMU free throttle implemented
in dmu_free_long_range(). The first issue is that get_next_chunk()
was calculating the number of L1 blocks the free would dirty
incorrectly. In some cases involving extremely large files, this
code would greatly overestimate the number of effected L1 blocks,
causing excessive calls to txg_wait_open(). This patch corrects
the calculation.
The second issue is that the free throttle uses the total number
of free'd blocks in all (open, quiescing, and syncing) txgs to
determine whether to throttle. This causes large frees (such as
those created by the first issue) to cause 4 txg syncs before
any further frees were allowed to proceed. This patch ensures
that the accounting is done entirely in a per-txg fashion, so
that frees from a given txg don't affect those that immediately
follow it.
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Matthew Ahrens <[email protected]>
Signed-off-by: Tom Caputi <[email protected]>
Closes #8655
Diffstat (limited to 'config/kernel-ctl-table-name.m4')
0 files changed, 0 insertions, 0 deletions