mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-12-09 00:00:17 +03:00
57 lines
1.7 KiB
C
57 lines
1.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _BCACHEFS_BTREE_WRITE_H
|
|
#define _BCACHEFS_BTREE_WRITE_H
|
|
|
|
#include "data/write_types.h"
|
|
|
|
struct btree_write_bio {
|
|
struct work_struct work;
|
|
__BKEY_PADDED(key, BKEY_BTREE_PTR_VAL_U64s_MAX);
|
|
void *data;
|
|
unsigned data_bytes;
|
|
unsigned sector_offset;
|
|
u64 start_time;
|
|
#ifdef CONFIG_BCACHEFS_ASYNC_OBJECT_LISTS
|
|
unsigned list_idx;
|
|
#endif
|
|
struct bch_write_bio wbio;
|
|
};
|
|
|
|
static inline void set_btree_node_dirty_acct(struct bch_fs *c, struct btree *b)
|
|
{
|
|
if (!test_and_set_bit(BTREE_NODE_dirty, &b->flags))
|
|
atomic_long_inc(&c->btree_cache.nr_dirty);
|
|
}
|
|
|
|
static inline void clear_btree_node_dirty_acct(struct bch_fs *c, struct btree *b)
|
|
{
|
|
if (test_and_clear_bit(BTREE_NODE_dirty, &b->flags))
|
|
atomic_long_dec(&c->btree_cache.nr_dirty);
|
|
}
|
|
|
|
bool bch2_btree_post_write_cleanup(struct bch_fs *, struct btree *);
|
|
|
|
enum btree_write_flags {
|
|
__BTREE_WRITE_ONLY_IF_NEED = BTREE_WRITE_TYPE_BITS,
|
|
__BTREE_WRITE_ALREADY_STARTED,
|
|
};
|
|
#define BTREE_WRITE_ONLY_IF_NEED BIT(__BTREE_WRITE_ONLY_IF_NEED)
|
|
#define BTREE_WRITE_ALREADY_STARTED BIT(__BTREE_WRITE_ALREADY_STARTED)
|
|
|
|
void __bch2_btree_node_write(struct bch_fs *, struct btree *, unsigned);
|
|
void bch2_btree_node_write(struct bch_fs *, struct btree *,
|
|
enum six_lock_type, unsigned);
|
|
void bch2_btree_node_write_trans(struct btree_trans *, struct btree *,
|
|
enum six_lock_type, unsigned);
|
|
void bch2_btree_init_next(struct btree_trans *, struct btree *);
|
|
|
|
static inline void btree_node_write_if_need(struct btree_trans *trans, struct btree *b,
|
|
enum six_lock_type lock_held)
|
|
{
|
|
bch2_btree_node_write_trans(trans, b, lock_held, BTREE_WRITE_ONLY_IF_NEED);
|
|
}
|
|
|
|
void bch2_btree_write_stats_to_text(struct printbuf *, struct bch_fs *);
|
|
|
|
#endif /* _BCACHEFS_BTREE_WRITE_H */
|