summaryrefslogtreecommitdiffstats
path: root/config/kernel-blk-queue-discard.m4
diff options
context:
space:
mode:
authorTom Caputi <[email protected]>2019-04-25 13:16:24 -0400
committerBrian Behlendorf <[email protected]>2019-04-25 10:16:24 -0700
commitf4c594da94d856c422512a54e48070f890b2685b (patch)
tree4d8ef38193df1f81ad33e7e02a005c11113ac491 /config/kernel-blk-queue-discard.m4
parent2b127afb44d11bfddaf8ed95be18c7aefe7ea5de (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-blk-queue-discard.m4')
0 files changed, 0 insertions, 0 deletions