1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun #ifndef BTRFS_DISCARD_H 4*4882a593Smuzhiyun #define BTRFS_DISCARD_H 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #include <linux/sizes.h> 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun struct btrfs_fs_info; 9*4882a593Smuzhiyun struct btrfs_discard_ctl; 10*4882a593Smuzhiyun struct btrfs_block_group; 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun /* Discard size limits */ 13*4882a593Smuzhiyun #define BTRFS_ASYNC_DISCARD_DEFAULT_MAX_SIZE (SZ_64M) 14*4882a593Smuzhiyun #define BTRFS_ASYNC_DISCARD_MAX_FILTER (SZ_1M) 15*4882a593Smuzhiyun #define BTRFS_ASYNC_DISCARD_MIN_FILTER (SZ_32K) 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun /* List operations */ 18*4882a593Smuzhiyun void btrfs_discard_check_filter(struct btrfs_block_group *block_group, u64 bytes); 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun /* Work operations */ 21*4882a593Smuzhiyun void btrfs_discard_cancel_work(struct btrfs_discard_ctl *discard_ctl, 22*4882a593Smuzhiyun struct btrfs_block_group *block_group); 23*4882a593Smuzhiyun void btrfs_discard_queue_work(struct btrfs_discard_ctl *discard_ctl, 24*4882a593Smuzhiyun struct btrfs_block_group *block_group); 25*4882a593Smuzhiyun void btrfs_discard_schedule_work(struct btrfs_discard_ctl *discard_ctl, 26*4882a593Smuzhiyun bool override); 27*4882a593Smuzhiyun bool btrfs_run_discard_work(struct btrfs_discard_ctl *discard_ctl); 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun /* Update operations */ 30*4882a593Smuzhiyun void btrfs_discard_calc_delay(struct btrfs_discard_ctl *discard_ctl); 31*4882a593Smuzhiyun void btrfs_discard_update_discardable(struct btrfs_block_group *block_group, 32*4882a593Smuzhiyun struct btrfs_free_space_ctl *ctl); 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun /* Setup/cleanup operations */ 35*4882a593Smuzhiyun void btrfs_discard_punt_unused_bgs_list(struct btrfs_fs_info *fs_info); 36*4882a593Smuzhiyun void btrfs_discard_resume(struct btrfs_fs_info *fs_info); 37*4882a593Smuzhiyun void btrfs_discard_stop(struct btrfs_fs_info *fs_info); 38*4882a593Smuzhiyun void btrfs_discard_init(struct btrfs_fs_info *fs_info); 39*4882a593Smuzhiyun void btrfs_discard_cleanup(struct btrfs_fs_info *fs_info); 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun #endif 42