xref: /openbmc/linux/fs/btrfs/dev-replace.h (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
19888c340SDavid Sterba /* SPDX-License-Identifier: GPL-2.0 */
2ff023aacSStefan Behrens /*
3ff023aacSStefan Behrens  * Copyright (C) STRATO AG 2012.  All rights reserved.
4ff023aacSStefan Behrens  */
5ff023aacSStefan Behrens 
69888c340SDavid Sterba #ifndef BTRFS_DEV_REPLACE_H
79888c340SDavid Sterba #define BTRFS_DEV_REPLACE_H
8ff023aacSStefan Behrens 
9e93c89c1SStefan Behrens struct btrfs_ioctl_dev_replace_args;
10d6921739SJosef Bacik struct btrfs_fs_info;
11d6921739SJosef Bacik struct btrfs_trans_handle;
12d6921739SJosef Bacik struct btrfs_dev_replace;
13d6921739SJosef Bacik struct btrfs_block_group;
14e93c89c1SStefan Behrens 
15e93c89c1SStefan Behrens int btrfs_init_dev_replace(struct btrfs_fs_info *fs_info);
162b584c68SDavid Sterba int btrfs_run_dev_replace(struct btrfs_trans_handle *trans);
172ff7e61eSJeff Mahoney int btrfs_dev_replace_by_ioctl(struct btrfs_fs_info *fs_info,
18e93c89c1SStefan Behrens 			    struct btrfs_ioctl_dev_replace_args *args);
19e93c89c1SStefan Behrens void btrfs_dev_replace_status(struct btrfs_fs_info *fs_info,
20e93c89c1SStefan Behrens 			      struct btrfs_ioctl_dev_replace_args *args);
2118e67c73SAnand Jain int btrfs_dev_replace_cancel(struct btrfs_fs_info *fs_info);
22e93c89c1SStefan Behrens void btrfs_dev_replace_suspend_for_unmount(struct btrfs_fs_info *fs_info);
23e93c89c1SStefan Behrens int btrfs_resume_dev_replace_async(struct btrfs_fs_info *fs_info);
24e1f60a65SDavid Sterba int __pure btrfs_dev_replace_is_ongoing(struct btrfs_dev_replace *dev_replace);
2578ce9fc2SNaohiro Aota bool btrfs_finish_block_group_to_copy(struct btrfs_device *srcdev,
2678ce9fc2SNaohiro Aota 				      struct btrfs_block_group *cache,
2778ce9fc2SNaohiro Aota 				      u64 physical);
28*77407dc0SJosef Bacik void btrfs_bio_counter_inc_blocked(struct btrfs_fs_info *fs_info);
29*77407dc0SJosef Bacik void btrfs_bio_counter_sub(struct btrfs_fs_info *fs_info, s64 amount);
30*77407dc0SJosef Bacik 
btrfs_bio_counter_dec(struct btrfs_fs_info * fs_info)31*77407dc0SJosef Bacik static inline void btrfs_bio_counter_dec(struct btrfs_fs_info *fs_info)
32*77407dc0SJosef Bacik {
33*77407dc0SJosef Bacik 	btrfs_bio_counter_sub(fs_info, 1);
34*77407dc0SJosef Bacik }
35*77407dc0SJosef Bacik 
36e93c89c1SStefan Behrens 
37ff023aacSStefan Behrens #endif
38