blob: 7dfdaf77ba37ff9330b639afd19072b3f8e4e3ea [file] [log] [blame]
Tom Rini83d290c2018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Marek Behún21a14fa2017-09-03 17:00:28 +02002/*
3 * BTRFS filesystem implementation for U-Boot
4 *
5 * 2017 Marek Behun, CZ.NIC, marek.behun@nic.cz
Marek Behún21a14fa2017-09-03 17:00:28 +02006 */
7
8#ifndef __BTRFS_BTRFS_H__
9#define __BTRFS_BTRFS_H__
10
11#include <linux/rbtree.h>
12#include "conv-funcs.h"
13
14struct btrfs_info {
15 struct btrfs_super_block sb;
Marek Behún21a14fa2017-09-03 17:00:28 +020016
Qu Wenruo207011b2020-06-24 18:02:57 +020017 struct __btrfs_root tree_root;
18 struct __btrfs_root fs_root;
19 struct __btrfs_root chunk_root;
Marek Behún21a14fa2017-09-03 17:00:28 +020020
21 struct rb_root chunks_root;
22};
23
24extern struct btrfs_info btrfs_info;
25
Marek Behún21a14fa2017-09-03 17:00:28 +020026/* dev.c */
27extern struct blk_desc *btrfs_blk_desc;
Simon Glass05289792020-05-10 11:39:57 -060028extern struct disk_partition *btrfs_part_info;
Marek Behún21a14fa2017-09-03 17:00:28 +020029
30int btrfs_devread(u64, int, void *);
31
32/* chunk-map.c */
33u64 btrfs_map_logical_to_physical(u64);
34int btrfs_chunk_map_init(void);
35void btrfs_chunk_map_exit(void);
Qu Wenruo57f24f12020-06-24 18:03:00 +020036int __btrfs_read_chunk_tree(void);
Marek Behún21a14fa2017-09-03 17:00:28 +020037
38/* compression.c */
39u32 btrfs_decompress(u8 type, const char *, u32, char *, u32);
40
41/* super.c */
42int btrfs_read_superblock(void);
43
44/* dir-item.c */
Qu Wenruo207011b2020-06-24 18:02:57 +020045typedef int (*btrfs_readdir_callback_t)(const struct __btrfs_root *,
Marek Behún21a14fa2017-09-03 17:00:28 +020046 struct btrfs_dir_item *);
47
Qu Wenruo207011b2020-06-24 18:02:57 +020048int btrfs_lookup_dir_item(const struct __btrfs_root *, u64, const char *, int,
Marek Behún21a14fa2017-09-03 17:00:28 +020049 struct btrfs_dir_item *);
Qu Wenruo207011b2020-06-24 18:02:57 +020050int btrfs_readdir(const struct __btrfs_root *, u64, btrfs_readdir_callback_t);
Marek Behún21a14fa2017-09-03 17:00:28 +020051
52/* root.c */
Qu Wenruo207011b2020-06-24 18:02:57 +020053int btrfs_find_root(u64, struct __btrfs_root *, struct btrfs_root_item *);
Marek Behún21a14fa2017-09-03 17:00:28 +020054u64 btrfs_lookup_root_ref(u64, struct btrfs_root_ref *, char *);
55
56/* inode.c */
Qu Wenruo207011b2020-06-24 18:02:57 +020057u64 btrfs_lookup_inode_ref(struct __btrfs_root *, u64, struct btrfs_inode_ref *,
Marek Behún21a14fa2017-09-03 17:00:28 +020058 char *);
Qu Wenruo207011b2020-06-24 18:02:57 +020059int btrfs_lookup_inode(const struct __btrfs_root *, struct btrfs_key *,
60 struct btrfs_inode_item *, struct __btrfs_root *);
61int btrfs_readlink(const struct __btrfs_root *, u64, char *);
62u64 btrfs_lookup_path(struct __btrfs_root *, u64, const char *, u8 *,
Marek Behún21a14fa2017-09-03 17:00:28 +020063 struct btrfs_inode_item *, int);
Qu Wenruo207011b2020-06-24 18:02:57 +020064u64 btrfs_file_read(const struct __btrfs_root *, u64, u64, u64, char *);
Marek Behún21a14fa2017-09-03 17:00:28 +020065
66/* subvolume.c */
67u64 btrfs_get_default_subvol_objectid(void);
68
69/* extent-io.c */
Qu Wenruo33966de2020-06-24 18:02:56 +020070u64 btrfs_read_extent_inline(struct __btrfs_path *,
Marek Behún21a14fa2017-09-03 17:00:28 +020071 struct btrfs_file_extent_item *, u64, u64,
72 char *);
Qu Wenruo33966de2020-06-24 18:02:56 +020073u64 btrfs_read_extent_reg(struct __btrfs_path *, struct btrfs_file_extent_item *,
Marek Behún21a14fa2017-09-03 17:00:28 +020074 u64, u64, char *);
75
76#endif /* !__BTRFS_BTRFS_H__ */