Commit 5693a128 authored by David Sterba's avatar David Sterba

btrfs: add forward declarations and headers, part 3

Do a cleanup in the rest of the headers:

- add forward declarations for types referenced by pointers
- add includes when types need them

This fixes potential compilation problems if the headers are reordered
or the missing includes are not provided indirectly.
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 602035d7
...@@ -3,8 +3,17 @@ ...@@ -3,8 +3,17 @@
#ifndef BTRFS_ACCESSORS_H #ifndef BTRFS_ACCESSORS_H
#define BTRFS_ACCESSORS_H #define BTRFS_ACCESSORS_H
#include <linux/stddef.h>
#include <asm/unaligned.h> #include <asm/unaligned.h>
#include <linux/stddef.h>
#include <linux/types.h>
#include <linux/align.h>
#include <linux/build_bug.h>
#include <linux/compiler.h>
#include <linux/string.h>
#include <linux/mm.h>
#include <uapi/linux/btrfs_tree.h>
struct extent_buffer;
struct btrfs_map_token { struct btrfs_map_token {
struct extent_buffer *eb; struct extent_buffer *eb;
......
...@@ -6,11 +6,23 @@ ...@@ -6,11 +6,23 @@
#ifndef BTRFS_BACKREF_H #ifndef BTRFS_BACKREF_H
#define BTRFS_BACKREF_H #define BTRFS_BACKREF_H
#include <linux/btrfs.h> #include <linux/types.h>
#include <linux/rbtree.h>
#include <linux/list.h>
#include <linux/slab.h>
#include <uapi/linux/btrfs.h>
#include <uapi/linux/btrfs_tree.h>
#include "messages.h" #include "messages.h"
#include "ulist.h" #include "locking.h"
#include "disk-io.h" #include "disk-io.h"
#include "extent_io.h" #include "extent_io.h"
#include "ctree.h"
struct extent_inode_elem;
struct ulist;
struct btrfs_extent_item;
struct btrfs_trans_handle;
struct btrfs_fs_info;
/* /*
* Used by implementations of iterate_extent_inodes_t (see definition below) to * Used by implementations of iterate_extent_inodes_t (see definition below) to
......
...@@ -3,9 +3,22 @@ ...@@ -3,9 +3,22 @@
#ifndef BTRFS_BLOCK_GROUP_H #ifndef BTRFS_BLOCK_GROUP_H
#define BTRFS_BLOCK_GROUP_H #define BTRFS_BLOCK_GROUP_H
#include <linux/atomic.h>
#include <linux/mutex.h>
#include <linux/list.h>
#include <linux/spinlock.h>
#include <linux/refcount.h>
#include <linux/wait.h>
#include <linux/sizes.h>
#include <linux/rwsem.h>
#include <linux/rbtree.h>
#include <uapi/linux/btrfs_tree.h>
#include "free-space-cache.h" #include "free-space-cache.h"
struct btrfs_chunk_map; struct btrfs_chunk_map;
struct btrfs_fs_info;
struct btrfs_inode;
struct btrfs_trans_handle;
enum btrfs_disk_cache_state { enum btrfs_disk_cache_state {
BTRFS_DC_WRITTEN, BTRFS_DC_WRITTEN,
......
...@@ -8,13 +8,32 @@ ...@@ -8,13 +8,32 @@
#include <linux/hash.h> #include <linux/hash.h>
#include <linux/refcount.h> #include <linux/refcount.h>
#include <linux/spinlock.h>
#include <linux/mutex.h>
#include <linux/rwsem.h>
#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/compiler.h>
#include <linux/fscrypt.h> #include <linux/fscrypt.h>
#include <linux/lockdep.h>
#include <uapi/linux/btrfs_tree.h>
#include <trace/events/btrfs.h> #include <trace/events/btrfs.h>
#include "block-rsv.h"
#include "btrfs_inode.h"
#include "extent_map.h" #include "extent_map.h"
#include "extent_io.h" #include "extent_io.h"
#include "extent-io-tree.h"
#include "ordered-data.h" #include "ordered-data.h"
#include "delayed-inode.h" #include "delayed-inode.h"
struct extent_state;
struct posix_acl;
struct iov_iter;
struct writeback_control;
struct btrfs_root;
struct btrfs_fs_info;
struct btrfs_trans_handle;
/* /*
* Since we search a directory based on f_pos (struct dir_context::pos) we have * Since we search a directory based on f_pos (struct dir_context::pos) we have
* to start at 2 since '.' and '..' have f_pos of 0 and 1 respectively, so * to start at 2 since '.' and '..' have f_pos of 0 and 1 respectively, so
......
...@@ -7,25 +7,24 @@ ...@@ -7,25 +7,24 @@
#define BTRFS_CTREE_H #define BTRFS_CTREE_H
#include <linux/pagemap.h> #include <linux/pagemap.h>
#include <linux/spinlock.h>
#include <linux/rbtree.h>
#include <linux/mutex.h>
#include <linux/wait.h>
#include <linux/list.h>
#include <linux/atomic.h>
#include <linux/xarray.h>
#include <linux/refcount.h>
#include <uapi/linux/btrfs_tree.h>
#include "locking.h" #include "locking.h"
#include "fs.h" #include "fs.h"
#include "accessors.h" #include "accessors.h"
#include "extent-io-tree.h"
struct extent_buffer;
struct btrfs_block_rsv;
struct btrfs_trans_handle; struct btrfs_trans_handle;
struct btrfs_transaction;
struct btrfs_pending_snapshot;
struct btrfs_delayed_ref_root;
struct btrfs_space_info;
struct btrfs_block_group; struct btrfs_block_group;
struct btrfs_ordered_sum;
struct btrfs_ref;
struct btrfs_bio;
struct btrfs_ioctl_encoded_io_args;
struct btrfs_device;
struct btrfs_fs_devices;
struct btrfs_balance_control;
struct btrfs_delayed_root;
struct reloc_control;
/* Read ahead values for struct btrfs_path.reada */ /* Read ahead values for struct btrfs_path.reada */
enum { enum {
......
...@@ -6,7 +6,17 @@ ...@@ -6,7 +6,17 @@
#ifndef BTRFS_DELAYED_REF_H #ifndef BTRFS_DELAYED_REF_H
#define BTRFS_DELAYED_REF_H #define BTRFS_DELAYED_REF_H
#include <linux/types.h>
#include <linux/refcount.h> #include <linux/refcount.h>
#include <linux/list.h>
#include <linux/rbtree.h>
#include <linux/mutex.h>
#include <linux/spinlock.h>
#include <linux/slab.h>
#include <uapi/linux/btrfs_tree.h>
struct btrfs_trans_handle;
struct btrfs_fs_info;
/* these are the possible values of struct btrfs_delayed_ref_node->action */ /* these are the possible values of struct btrfs_delayed_ref_node->action */
enum btrfs_delayed_ref_action { enum btrfs_delayed_ref_action {
......
...@@ -13,6 +13,7 @@ struct btrfs_free_cluster; ...@@ -13,6 +13,7 @@ struct btrfs_free_cluster;
struct btrfs_fs_info; struct btrfs_fs_info;
struct btrfs_root; struct btrfs_root;
struct btrfs_path; struct btrfs_path;
struct btrfs_ref;
struct btrfs_disk_key; struct btrfs_disk_key;
struct btrfs_delayed_ref_head; struct btrfs_delayed_ref_head;
struct btrfs_delayed_ref_root; struct btrfs_delayed_ref_root;
......
...@@ -4,12 +4,50 @@ ...@@ -4,12 +4,50 @@
#define BTRFS_FS_H #define BTRFS_FS_H
#include <linux/blkdev.h> #include <linux/blkdev.h>
#include <linux/fs.h>
#include <linux/btrfs_tree.h>
#include <linux/sizes.h> #include <linux/sizes.h>
#include <linux/time64.h>
#include <linux/compiler.h>
#include <linux/math.h>
#include <linux/atomic.h>
#include <linux/blkdev.h>
#include <linux/percpu_counter.h>
#include <linux/completion.h>
#include <linux/lockdep.h>
#include <linux/spinlock.h>
#include <linux/mutex.h>
#include <linux/rwlock_types.h>
#include <linux/rwsem.h>
#include <linux/semaphore.h>
#include <linux/list.h>
#include <linux/radix-tree.h>
#include <linux/workqueue.h>
#include <linux/wait.h>
#include <linux/wait_bit.h>
#include <linux/sched.h>
#include <linux/rbtree.h>
#include <uapi/linux/btrfs.h>
#include <uapi/linux/btrfs_tree.h>
#include "extent-io-tree.h" #include "extent-io-tree.h"
#include "async-thread.h" #include "async-thread.h"
#include "block-rsv.h" #include "block-rsv.h"
#include "fs.h"
struct inode;
struct super_block;
struct kobject;
struct reloc_control;
struct crypto_shash;
struct ulist;
struct btrfs_device;
struct btrfs_block_group;
struct btrfs_root;
struct btrfs_fs_devices;
struct btrfs_transaction;
struct btrfs_delayed_root;
struct btrfs_balance_control;
struct btrfs_subpage_info;
struct btrfs_stripe_hash_table;
struct btrfs_space_info;
#define BTRFS_MAX_EXTENT_SIZE SZ_128M #define BTRFS_MAX_EXTENT_SIZE SZ_128M
......
...@@ -6,12 +6,22 @@ ...@@ -6,12 +6,22 @@
#ifndef BTRFS_QGROUP_H #ifndef BTRFS_QGROUP_H
#define BTRFS_QGROUP_H #define BTRFS_QGROUP_H
#include <linux/types.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/rbtree.h> #include <linux/rbtree.h>
#include <linux/kobject.h> #include <linux/kobject.h>
#include "ulist.h" #include <linux/list.h>
#include "delayed-ref.h" #include <uapi/linux/btrfs_tree.h>
#include "misc.h"
struct extent_buffer;
struct extent_changeset;
struct btrfs_delayed_extent_op;
struct btrfs_fs_info;
struct btrfs_root;
struct btrfs_ioctl_quota_ctl_args;
struct btrfs_trans_handle;
struct btrfs_delayed_ref_root;
struct btrfs_inode;
/* /*
* Btrfs qgroup overview * Btrfs qgroup overview
...@@ -321,7 +331,6 @@ int btrfs_limit_qgroup(struct btrfs_trans_handle *trans, u64 qgroupid, ...@@ -321,7 +331,6 @@ int btrfs_limit_qgroup(struct btrfs_trans_handle *trans, u64 qgroupid,
struct btrfs_qgroup_limit *limit); struct btrfs_qgroup_limit *limit);
int btrfs_read_qgroup_config(struct btrfs_fs_info *fs_info); int btrfs_read_qgroup_config(struct btrfs_fs_info *fs_info);
void btrfs_free_qgroup_config(struct btrfs_fs_info *fs_info); void btrfs_free_qgroup_config(struct btrfs_fs_info *fs_info);
struct btrfs_delayed_extent_op;
int btrfs_qgroup_trace_extent_nolock( int btrfs_qgroup_trace_extent_nolock(
struct btrfs_fs_info *fs_info, struct btrfs_fs_info *fs_info,
......
...@@ -6,13 +6,28 @@ ...@@ -6,13 +6,28 @@
#ifndef BTRFS_VOLUMES_H #ifndef BTRFS_VOLUMES_H
#define BTRFS_VOLUMES_H #define BTRFS_VOLUMES_H
#include <linux/blk_types.h>
#include <linux/sizes.h>
#include <linux/atomic.h>
#include <linux/sort.h> #include <linux/sort.h>
#include <linux/btrfs.h> #include <linux/list.h>
#include "async-thread.h" #include <linux/mutex.h>
#include <linux/log2.h>
#include <linux/kobject.h>
#include <linux/refcount.h>
#include <linux/completion.h>
#include <linux/rbtree.h>
#include <uapi/linux/btrfs.h>
#include "messages.h" #include "messages.h"
#include "tree-checker.h"
#include "rcu-string.h" #include "rcu-string.h"
struct block_device;
struct bdev_handle;
struct btrfs_fs_info;
struct btrfs_block_group;
struct btrfs_trans_handle;
struct btrfs_zoned_device_info;
#define BTRFS_MAX_DATA_CHUNK_SIZE (10ULL * SZ_1G) #define BTRFS_MAX_DATA_CHUNK_SIZE (10ULL * SZ_1G)
extern struct mutex uuid_mutex; extern struct mutex uuid_mutex;
...@@ -77,7 +92,7 @@ enum btrfs_raid_types { ...@@ -77,7 +92,7 @@ enum btrfs_raid_types {
#define BTRFS_DEV_STATE_FLUSH_SENT (4) #define BTRFS_DEV_STATE_FLUSH_SENT (4)
#define BTRFS_DEV_STATE_NO_READA (5) #define BTRFS_DEV_STATE_NO_READA (5)
struct btrfs_zoned_device_info; struct btrfs_fs_devices;
struct btrfs_device { struct btrfs_device {
struct list_head dev_list; /* device_list_mutex */ struct list_head dev_list; /* device_list_mutex */
...@@ -557,8 +572,6 @@ static inline void btrfs_free_chunk_map(struct btrfs_chunk_map *map) ...@@ -557,8 +572,6 @@ static inline void btrfs_free_chunk_map(struct btrfs_chunk_map *map)
} }
} }
struct btrfs_balance_args;
struct btrfs_balance_progress;
struct btrfs_balance_control { struct btrfs_balance_control {
struct btrfs_balance_args data; struct btrfs_balance_args data;
struct btrfs_balance_args meta; struct btrfs_balance_args meta;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment