Here is v5 of speculative prealloc. quota throttling. Sorry for the delay. This
is mostly a rebase. I'm running some quick xfstests tests since we've moved onto
3.9-rc1 now, but the only real merge conflict was inheritance of the infinite
loop alloc_blocks fix. Otherwise, this just includes some extra fixups to remove
dependence on typedef's of various functions we happen to modify.
- Rebased against current tree (3.9-rc1), incl. e78c420b.
- Added Mark's reviewed-by's.
- Removed use of typedef's in modified functions (affects patches 3 and 4).
- Drop patch 3/7 from v3 (xfs: cap prealloc size to free space before shift).
- Several updates to patch 4/6:
- Rename xfs_dquot_init_prealloc() to xfs_dquot_set_prealloc_limits().
- Unroll the prealloc threshold loop and remove the increment def.
- Fix up some comments.
- 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 (6):
xfs: reorganize xfs_iomap_prealloc_size to remove indentation
xfs: push rounddown_pow_of_two() to after prealloc throttle
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 | 48 ++++++++++++--
fs/xfs/xfs_dquot.h | 16 ++++-
fs/xfs/xfs_iomap.c | 161 +++++++++++++++++++++++++++++++++++++---------
fs/xfs/xfs_qm.c | 2 +-
fs/xfs/xfs_qm.h | 2 +-
fs/xfs/xfs_qm_syscalls.c | 9 ++-
fs/xfs/xfs_trace.h | 24 +++++++
fs/xfs/xfs_trans_dquot.c | 10 ++--
8 files changed, 224 insertions(+), 48 deletions(-)