btrfs-progs: sync btrfs_path fields with the kernel
When we sync ctree.c into btrfs-progs we're going to need to have a bunch of flags and definitions that exist in btrfs_path in the kernel that do not exist in btrfs_progs. Sync these changes into btrfs-progs to enable us to sync ctree.c into btrfs-progs. Signed-off-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
75262a2a0f
commit
d1bafa2324
|
@ -129,14 +129,32 @@ static inline u32 __BTRFS_LEAF_DATA_SIZE(u32 nodesize)
|
||||||
* The slots array records the index of the item or block pointer
|
* The slots array records the index of the item or block pointer
|
||||||
* used while walking the tree.
|
* used while walking the tree.
|
||||||
*/
|
*/
|
||||||
enum { READA_NONE = 0, READA_BACK, READA_FORWARD };
|
enum {
|
||||||
|
READA_NONE,
|
||||||
|
READA_BACK,
|
||||||
|
READA_FORWARD,
|
||||||
|
/*
|
||||||
|
* Similar to READA_FORWARD but unlike it:
|
||||||
|
*
|
||||||
|
* 1) It will trigger readahead even for leaves that are not close to
|
||||||
|
* each other on disk;
|
||||||
|
* 2) It also triggers readahead for nodes;
|
||||||
|
* 3) During a search, even when a node or leaf is already in memory, it
|
||||||
|
* will still trigger readahead for other nodes and leaves that follow
|
||||||
|
* it.
|
||||||
|
*
|
||||||
|
* This is meant to be used only when we know we are iterating over the
|
||||||
|
* entire tree or a very large part of it.
|
||||||
|
*/
|
||||||
|
READA_FORWARD_ALWAYS,
|
||||||
|
};
|
||||||
|
|
||||||
struct btrfs_path {
|
struct btrfs_path {
|
||||||
struct extent_buffer *nodes[BTRFS_MAX_LEVEL];
|
struct extent_buffer *nodes[BTRFS_MAX_LEVEL];
|
||||||
int slots[BTRFS_MAX_LEVEL];
|
int slots[BTRFS_MAX_LEVEL];
|
||||||
#if 0
|
|
||||||
/* The kernel locking scheme is not done in userspace. */
|
/* The kernel locking scheme is not done in userspace. */
|
||||||
int locks[BTRFS_MAX_LEVEL];
|
int locks[BTRFS_MAX_LEVEL];
|
||||||
#endif
|
|
||||||
signed char reada;
|
signed char reada;
|
||||||
/* keep some upper locks as we walk down */
|
/* keep some upper locks as we walk down */
|
||||||
u8 lowest_level;
|
u8 lowest_level;
|
||||||
|
@ -145,8 +163,21 @@ struct btrfs_path {
|
||||||
* set by btrfs_split_item, tells search_slot to keep all locks
|
* set by btrfs_split_item, tells search_slot to keep all locks
|
||||||
* and to force calls to keep space in the nodes
|
* and to force calls to keep space in the nodes
|
||||||
*/
|
*/
|
||||||
u8 search_for_split;
|
unsigned int search_for_split:1;
|
||||||
u8 skip_check_block;
|
unsigned int keep_locks:1;
|
||||||
|
unsigned int skip_locking:1;
|
||||||
|
unsigned int search_commit_root:1;
|
||||||
|
unsigned int need_commit_sem:1;
|
||||||
|
unsigned int skip_release_on_error:1;
|
||||||
|
/*
|
||||||
|
* Indicate that new item (btrfs_search_slot) is extending already
|
||||||
|
* existing item and ins_len contains only the data size and not item
|
||||||
|
* header (ie. sizeof(struct btrfs_item) is not included).
|
||||||
|
*/
|
||||||
|
unsigned int search_for_extension:1;
|
||||||
|
/* Stop search if any locks need to be taken (for read) */
|
||||||
|
unsigned int nowait:1;
|
||||||
|
unsigned int skip_check_block:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define BTRFS_MAX_EXTENT_ITEM_SIZE(r) \
|
#define BTRFS_MAX_EXTENT_ITEM_SIZE(r) \
|
||||||
|
|
Loading…
Reference in New Issue