btrfs: limit max discard size for async discard
[linux-block.git] / fs / btrfs / discard.h
CommitLineData
b0643e59
DZ
1// SPDX-License-Identifier: GPL-2.0
2
3#ifndef BTRFS_DISCARD_H
4#define BTRFS_DISCARD_H
5
4aa9ad52
DZ
6#include <linux/sizes.h>
7
b0643e59
DZ
8struct btrfs_fs_info;
9struct btrfs_discard_ctl;
10struct btrfs_block_group;
11
4aa9ad52
DZ
12/* Discard size limits */
13#define BTRFS_ASYNC_DISCARD_MAX_SIZE (SZ_64M)
14
6e80d4f8 15/* Work operations */
b0643e59
DZ
16void btrfs_discard_cancel_work(struct btrfs_discard_ctl *discard_ctl,
17 struct btrfs_block_group *block_group);
18void btrfs_discard_queue_work(struct btrfs_discard_ctl *discard_ctl,
19 struct btrfs_block_group *block_group);
20void btrfs_discard_schedule_work(struct btrfs_discard_ctl *discard_ctl,
21 bool override);
22bool btrfs_run_discard_work(struct btrfs_discard_ctl *discard_ctl);
23
dfb79ddb 24/* Update operations */
a2309300 25void btrfs_discard_calc_delay(struct btrfs_discard_ctl *discard_ctl);
dfb79ddb
DZ
26void btrfs_discard_update_discardable(struct btrfs_block_group *block_group,
27 struct btrfs_free_space_ctl *ctl);
28
6e80d4f8
DZ
29/* Setup/cleanup operations */
30void btrfs_discard_punt_unused_bgs_list(struct btrfs_fs_info *fs_info);
b0643e59
DZ
31void btrfs_discard_resume(struct btrfs_fs_info *fs_info);
32void btrfs_discard_stop(struct btrfs_fs_info *fs_info);
33void btrfs_discard_init(struct btrfs_fs_info *fs_info);
34void btrfs_discard_cleanup(struct btrfs_fs_info *fs_info);
35
36#endif