for-6.3-rc7-tag
-----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEE8rQSAMVO+zA4DBdWxWXV+ddtWDsFAmRCmhgACgkQxWXV+ddt WDsHrA/+KaCgixD0Z/8f2tMu2Kd5KQ6vQGMlydZzr0OvTYh3skAjTbAfTGAUHiXF 6qZOpYYEilE+xhdcTegB4fV1OPJQw8+rvRrPps9ugZEShQhHlUbIuuiSCtrILKmK 424wkllNc7NDbz5CHbbBpNNGdc6Xgyr3zy4nKZf/Sezmj+aK/nRL/JmazzUaEnxM NC8hBq+Nrpz0ucyStiLp4jfdp5geo4hcfpXVEBuH2ZpzhBPV4usLBWwsEj6uBcTy mpvMNHTFw/8H/k9w6GS+E/hrU5Rs5tWHTlEIz+xD1kK8DoPoE1arcgdLCzS0yC81 8MyjB2qgMp3XutVlQGwyWAalY04UfzKvQ4yUYwTKT24pToc0TmQq8YV2Sy7c7SeA SDy+Ev1wgteeaPskhS9vMbJvnKVSzOMovt0oNR6VoPivXZ0OjVRDkC3fT2l497JL jZB3H7JaUGxJ/du1kUQkhL2c6YnjkWsqbl1YoOUBilNXkY/Mbz8NCZZdLJia0Q41 P14w4aeD8HAYBNkOvSrDwfBQB5fR31GQq3QH/dGfJ4i41eJlNAposcOWQkV115Ib eILV3kFxJNSCpUI7eaE2biacGxJLdiWPQDv5Oo5AETyqcoiFqjCDerZWCTgH54H2 YzzJiY/1BH8RgYbrCUyoPmyGOhoovYSVG9gLK3nXk1jqWltJgD0= =mGL5 -----END PGP SIGNATURE----- Merge tag 'for-6.3-rc7-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux Pull btrfs fixes from David Sterba: "Two patches fixing the problem with aync discard. The default settings had a low IOPS limit and processing a large batch to discard would take a long time. On laptops this can cause increased power consumption due to disk activity. As async discard has been on by default since 6.2 this likely affects a lot of users. Summary: - increase the default IOPS limit 10x which reportedly helped - setting the sysfs IOPS value to 0 now does not throttle anymore allowing the discards to be processed at full speed. Previously there was an arbitrary 6 hour target for processing the pending batch" * tag 'for-6.3-rc7-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: btrfs: reinterpret async discard iops_limit=0 as no delay btrfs: set default discard iops_limit to 1000
This commit is contained in:
commit
c337b23f32
@ -56,11 +56,9 @@
|
|||||||
#define BTRFS_DISCARD_DELAY (120ULL * NSEC_PER_SEC)
|
#define BTRFS_DISCARD_DELAY (120ULL * NSEC_PER_SEC)
|
||||||
#define BTRFS_DISCARD_UNUSED_DELAY (10ULL * NSEC_PER_SEC)
|
#define BTRFS_DISCARD_UNUSED_DELAY (10ULL * NSEC_PER_SEC)
|
||||||
|
|
||||||
/* Target completion latency of discarding all discardable extents */
|
|
||||||
#define BTRFS_DISCARD_TARGET_MSEC (6 * 60 * 60UL * MSEC_PER_SEC)
|
|
||||||
#define BTRFS_DISCARD_MIN_DELAY_MSEC (1UL)
|
#define BTRFS_DISCARD_MIN_DELAY_MSEC (1UL)
|
||||||
#define BTRFS_DISCARD_MAX_DELAY_MSEC (1000UL)
|
#define BTRFS_DISCARD_MAX_DELAY_MSEC (1000UL)
|
||||||
#define BTRFS_DISCARD_MAX_IOPS (10U)
|
#define BTRFS_DISCARD_MAX_IOPS (1000U)
|
||||||
|
|
||||||
/* Monotonically decreasing minimum length filters after index 0 */
|
/* Monotonically decreasing minimum length filters after index 0 */
|
||||||
static int discard_minlen[BTRFS_NR_DISCARD_LISTS] = {
|
static int discard_minlen[BTRFS_NR_DISCARD_LISTS] = {
|
||||||
@ -577,6 +575,7 @@ void btrfs_discard_calc_delay(struct btrfs_discard_ctl *discard_ctl)
|
|||||||
s32 discardable_extents;
|
s32 discardable_extents;
|
||||||
s64 discardable_bytes;
|
s64 discardable_bytes;
|
||||||
u32 iops_limit;
|
u32 iops_limit;
|
||||||
|
unsigned long min_delay = BTRFS_DISCARD_MIN_DELAY_MSEC;
|
||||||
unsigned long delay;
|
unsigned long delay;
|
||||||
|
|
||||||
discardable_extents = atomic_read(&discard_ctl->discardable_extents);
|
discardable_extents = atomic_read(&discard_ctl->discardable_extents);
|
||||||
@ -607,13 +606,19 @@ void btrfs_discard_calc_delay(struct btrfs_discard_ctl *discard_ctl)
|
|||||||
}
|
}
|
||||||
|
|
||||||
iops_limit = READ_ONCE(discard_ctl->iops_limit);
|
iops_limit = READ_ONCE(discard_ctl->iops_limit);
|
||||||
if (iops_limit)
|
|
||||||
delay = MSEC_PER_SEC / iops_limit;
|
|
||||||
else
|
|
||||||
delay = BTRFS_DISCARD_TARGET_MSEC / discardable_extents;
|
|
||||||
|
|
||||||
delay = clamp(delay, BTRFS_DISCARD_MIN_DELAY_MSEC,
|
if (iops_limit) {
|
||||||
BTRFS_DISCARD_MAX_DELAY_MSEC);
|
delay = MSEC_PER_SEC / iops_limit;
|
||||||
|
} else {
|
||||||
|
/*
|
||||||
|
* Unset iops_limit means go as fast as possible, so allow a
|
||||||
|
* delay of 0.
|
||||||
|
*/
|
||||||
|
delay = 0;
|
||||||
|
min_delay = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
delay = clamp(delay, min_delay, BTRFS_DISCARD_MAX_DELAY_MSEC);
|
||||||
discard_ctl->delay_ms = delay;
|
discard_ctl->delay_ms = delay;
|
||||||
|
|
||||||
spin_unlock(&discard_ctl->lock);
|
spin_unlock(&discard_ctl->lock);
|
||||||
|
Loading…
Reference in New Issue
Block a user