linux/fs/bcachefs/reflink.h

/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCACHEFS_REFLINK_H
#define _BCACHEFS_REFLINK_H

enum bch_validate_flags;

int bch2_reflink_p_invalid(struct bch_fs *, struct bkey_s_c,
			   enum bch_validate_flags, struct printbuf *);
void bch2_reflink_p_to_text(struct printbuf *, struct bch_fs *,
			    struct bkey_s_c);
bool bch2_reflink_p_merge(struct bch_fs *, struct bkey_s, struct bkey_s_c);
int bch2_trigger_reflink_p(struct btree_trans *, enum btree_id, unsigned,
			   struct bkey_s_c, struct bkey_s,
			   enum btree_iter_update_trigger_flags);

#define bch2_bkey_ops_reflink_p

int bch2_reflink_v_invalid(struct bch_fs *, struct bkey_s_c,
			   enum bch_validate_flags, struct printbuf *);
void bch2_reflink_v_to_text(struct printbuf *, struct bch_fs *,
			    struct bkey_s_c);
int bch2_trigger_reflink_v(struct btree_trans *, enum btree_id, unsigned,
			   struct bkey_s_c, struct bkey_s,
			   enum btree_iter_update_trigger_flags);

#define bch2_bkey_ops_reflink_v

int bch2_indirect_inline_data_invalid(struct bch_fs *, struct bkey_s_c,
				      enum bch_validate_flags, struct printbuf *);
void bch2_indirect_inline_data_to_text(struct printbuf *,
				struct bch_fs *, struct bkey_s_c);
int bch2_trigger_indirect_inline_data(struct btree_trans *,
					 enum btree_id, unsigned,
			      struct bkey_s_c, struct bkey_s,
			      enum btree_iter_update_trigger_flags);

#define bch2_bkey_ops_indirect_inline_data

static inline const __le64 *bkey_refcount_c(struct bkey_s_c k)
{}

static inline __le64 *bkey_refcount(struct bkey_s k)
{}

s64 bch2_remap_range(struct bch_fs *, subvol_inum, u64,
		     subvol_inum, u64, u64, u64, s64 *);

#endif /* _BCACHEFS_REFLINK_H */