mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 10:49:33 +00:00
![Josef Bacik](/assets/img/avatar_default.png)
This passes in the block_group and the free_space_ctl, but we can get this from the block group itself. Part of this is because we call it from __load_free_space_cache, which can be called for the inode cache as well. Move that call into the block group specific load section, wrap it in the right lock that we need for the assertion (but otherwise this is safe without the lock because this happens in single-thread context). Fix up the arguments to only take the block group. Add a lockdep_assert as well for good measure to make sure we don't mess up the locking again. Reviewed-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: David Sterba <dsterba@suse.com>
40 lines
1.4 KiB
C
40 lines
1.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
#ifndef BTRFS_DISCARD_H
|
|
#define BTRFS_DISCARD_H
|
|
|
|
#include <linux/sizes.h>
|
|
|
|
struct btrfs_fs_info;
|
|
struct btrfs_discard_ctl;
|
|
struct btrfs_block_group;
|
|
|
|
/* Discard size limits */
|
|
#define BTRFS_ASYNC_DISCARD_DEFAULT_MAX_SIZE (SZ_64M)
|
|
#define BTRFS_ASYNC_DISCARD_MAX_FILTER (SZ_1M)
|
|
#define BTRFS_ASYNC_DISCARD_MIN_FILTER (SZ_32K)
|
|
|
|
/* List operations */
|
|
void btrfs_discard_check_filter(struct btrfs_block_group *block_group, u64 bytes);
|
|
|
|
/* 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);
|
|
|
|
/* 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
|