This v3 speculative prealloc quota throttling set is a simple rebase of v2 on
top of the recent speculative prealloc algorithm update to support sparse files.
I carried over the reviewed-by tags from patches 1-2, as I didn't fundamentally
change that code. Those are the patches slightly affected by the rebase,
so a second look at those might be prudent.
I've run a 1TB limit uquota sanity check to verify behavior as described in v2.
The numbers change slightly due to the slightly altered behavior of the new
prealloc algorithm (e.g., switching from using the size of the previous extent
the size of the file causes maximum extent allocations to kick in a bit later),
but otherwise the general behavior is the same. I'll run some tests with larger
files in parallel with review as well.
[Note that these tests also include the currently posted "xfs: increase prealloc
size to double ..." change to restore effectiveness of the prealloc algorithm
to my particular test case.]
- Rebased on top of updated speculative preallocation algorithm.
- Fix up xfs_iomap_prealloc_size() rounding (patch 2).
- Add pre-calculated fields to xfs_dquot to support throttling.
- Move to logarithmic (shift) throttler and finer tuned trigger/throttle logic.
Brian Foster (7):
xfs: reorganize xfs_iomap_prealloc_size to remove indentation
xfs: push rounddown_pow_of_two() to after prealloc throttle
xfs: cap prealloc size to free space before shift
xfs: pass xfs_dquot to xfs_qm_adjust_dqlimits() instead of
xfs: xfs_dquot prealloc throttling watermarks and low free space
xfs: add quota-driven speculative preallocation throttling
xfs: xfs_iomap_prealloc_size() tracepoint
fs/xfs/xfs_dquot.c | 46 ++++++++++++-
fs/xfs/xfs_dquot.h | 15 ++++-
fs/xfs/xfs_iomap.c | 163 +++++++++++++++++++++++++++++++++++++---------
fs/xfs/xfs_qm.c | 2 +-
fs/xfs/xfs_qm_syscalls.c | 1 +
fs/xfs/xfs_trace.h | 24 +++++++
fs/xfs/xfs_trans_dquot.c | 2 +-
7 files changed, 217 insertions(+), 36 deletions(-)