forked from Minki/linux
dfb79ddb13
The number of discardable extents will serve as the rate limiting metric for how often we should discard. This keeps track of discardable extents in the free space caches by maintaining deltas and propagating them to the global count. The deltas are calculated from 2 values stored in PREV and CURR entries, then propagated up to the global discard ctl. The current counter value becomes the previous counter value after update. Signed-off-by: Dennis Zhou <dennis@kernel.org> Reviewed-by: David Sterba <dsterba@suse.com> [ update changelog ] Signed-off-by: David Sterba <dsterba@suse.com>
31 lines
1.0 KiB
C
31 lines
1.0 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_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
|