1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _BCACHEFS_SUBVOLUME_H 3 #define _BCACHEFS_SUBVOLUME_H 4 5 #include "darray.h" 6 #include "subvolume_types.h" 7 8 enum bkey_invalid_flags; 9 10 int bch2_check_subvols(struct bch_fs *); 11 12 int bch2_subvolume_invalid(struct bch_fs *, struct bkey_s_c, 13 enum bkey_invalid_flags, struct printbuf *); 14 void bch2_subvolume_to_text(struct printbuf *, struct bch_fs *, struct bkey_s_c); 15 16 #define bch2_bkey_ops_subvolume ((struct bkey_ops) { \ 17 .key_invalid = bch2_subvolume_invalid, \ 18 .val_to_text = bch2_subvolume_to_text, \ 19 .min_val_size = 16, \ 20 }) 21 22 int bch2_subvolume_get(struct btree_trans *, unsigned, 23 bool, int, struct bch_subvolume *); 24 int bch2_subvolume_get_snapshot(struct btree_trans *, u32, u32 *); 25 26 int bch2_subvol_is_ro_trans(struct btree_trans *, u32); 27 int bch2_subvol_is_ro(struct bch_fs *, u32); 28 29 int bch2_delete_dead_snapshots(struct bch_fs *); 30 void bch2_delete_dead_snapshots_async(struct bch_fs *); 31 32 int bch2_subvolume_unlink(struct btree_trans *, u32); 33 int bch2_subvolume_create(struct btree_trans *, u64, u32, 34 u32 *, u32 *, bool); 35 36 int bch2_fs_subvolumes_init(struct bch_fs *); 37 38 #endif /* _BCACHEFS_SUBVOLUME_H */ 39