mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-29 23:24:11 +08:00
a230930084
An earlier patch keeps track of discardable_extents. These are undiscarded extents managed by the free space cache. Here, we will use this to dynamically calculate the discard delay interval. There are 3 rate to consider. The first is the target convergence rate, the rate to discard all discardable_extents over the BTRFS_DISCARD_TARGET_MSEC time frame. This is clamped by the lower limit, the iops limit or BTRFS_DISCARD_MIN_DELAY (1ms), and the upper limit, BTRFS_DISCARD_MAX_DELAY (1s). We reevaluate this delay every transaction commit. Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Dennis Zhou <dennis@kernel.org> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
32 lines
1.1 KiB
C
32 lines
1.1 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
|
|
#ifndef BTRFS_DISCARD_H
|
|
#define BTRFS_DISCARD_H
|
|
|
|
struct btrfs_fs_info;
|
|
struct btrfs_discard_ctl;
|
|
struct btrfs_block_group;
|
|
|
|
/* Work operations */
|
|
void btrfs_discard_cancel_work(struct btrfs_discard_ctl *discard_ctl,
|
|
struct btrfs_block_group *block_group);
|
|
void btrfs_discard_queue_work(struct btrfs_discard_ctl *discard_ctl,
|
|
struct btrfs_block_group *block_group);
|
|
void btrfs_discard_schedule_work(struct btrfs_discard_ctl *discard_ctl,
|
|
bool override);
|
|
bool btrfs_run_discard_work(struct btrfs_discard_ctl *discard_ctl);
|
|
|
|
/* Update operations */
|
|
void btrfs_discard_calc_delay(struct btrfs_discard_ctl *discard_ctl);
|
|
void btrfs_discard_update_discardable(struct btrfs_block_group *block_group,
|
|
struct btrfs_free_space_ctl *ctl);
|
|
|
|
/* Setup/cleanup operations */
|
|
void btrfs_discard_punt_unused_bgs_list(struct btrfs_fs_info *fs_info);
|
|
void btrfs_discard_resume(struct btrfs_fs_info *fs_info);
|
|
void btrfs_discard_stop(struct btrfs_fs_info *fs_info);
|
|
void btrfs_discard_init(struct btrfs_fs_info *fs_info);
|
|
void btrfs_discard_cleanup(struct btrfs_fs_info *fs_info);
|
|
|
|
#endif
|