mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 00:34:20 +08:00
e3e464ac6d
Ever since the btree code was first written, handling of overwriting existing extents - including partially overwriting and splittin existing extents - was handled as part of the core btree insert path. The modern transaction and iterator infrastructure didn't exist then, so that was the only way for it to be done. This patch moves that outside of the core btree code to a pass that runs at transaction commit time. This is a significant simplification to the btree code and overall reduction in code size, but more importantly it gets us much closer to the core btree code being completely independent of extents and is important prep work for snapshots. This introduces a new feature bit; the old and new extent update models are incompatible when the filesystem needs journal replay. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
17 lines
506 B
C
17 lines
506 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _BCACHEFS_EXTENT_UPDATE_H
|
|
#define _BCACHEFS_EXTENT_UPDATE_H
|
|
|
|
#include "bcachefs.h"
|
|
|
|
int bch2_extent_atomic_end(struct btree_iter *, struct bkey_i *,
|
|
struct bpos *);
|
|
int bch2_extent_trim_atomic(struct bkey_i *, struct btree_iter *);
|
|
int bch2_extent_is_atomic(struct bkey_i *, struct btree_iter *);
|
|
|
|
enum btree_insert_ret
|
|
bch2_extent_can_insert(struct btree_trans *, struct btree_iter *,
|
|
struct bkey_i *);
|
|
|
|
#endif /* _BCACHEFS_EXTENT_UPDATE_H */
|