Skip to content

Commit

Permalink
btrfs: add forward declarations and headers, part 2
Browse files Browse the repository at this point in the history
Do a cleanup in more 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: David Sterba <[email protected]>
  • Loading branch information
kdave committed Mar 4, 2024
1 parent 22b46bd commit 602035d
Show file tree
Hide file tree
Showing 26 changed files with 206 additions and 19 deletions.
2 changes: 2 additions & 0 deletions fs/btrfs/bio.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,14 @@
#ifndef BTRFS_BIO_H
#define BTRFS_BIO_H

#include <linux/types.h>
#include <linux/bio.h>
#include <linux/workqueue.h>
#include "tree-checker.h"

struct btrfs_bio;
struct btrfs_fs_info;
struct btrfs_inode;

#define BTRFS_BIO_INLINE_CSUM_SIZE 64

Expand Down
7 changes: 7 additions & 0 deletions fs/btrfs/block-rsv.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,15 @@
#ifndef BTRFS_BLOCK_RSV_H
#define BTRFS_BLOCK_RSV_H

#include <linux/types.h>
#include <linux/compiler.h>
#include <linux/spinlock.h>

struct btrfs_trans_handle;
struct btrfs_root;
struct btrfs_space_info;
struct btrfs_block_rsv;
struct btrfs_fs_info;
enum btrfs_reserve_flush_enum;

/*
Expand Down
10 changes: 8 additions & 2 deletions fs/btrfs/compression.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,18 @@
#define BTRFS_COMPRESSION_H

#include <linux/sizes.h>
#include <linux/mm.h>
#include <linux/list.h>
#include <linux/workqueue.h>
#include <linux/wait.h>
#include "bio.h"

struct address_space;
struct page;
struct inode;
struct btrfs_inode;
struct btrfs_ordered_extent;
struct btrfs_bio;

/*
* We want to make sure that amount of RAM required to uncompress an extent is
Expand All @@ -32,8 +40,6 @@ static_assert((BTRFS_MAX_COMPRESSED % PAGE_SIZE) == 0);

#define BTRFS_ZLIB_DEFAULT_LEVEL 3

struct page;

struct compressed_bio {
/* Number of compressed pages in the array */
unsigned int nr_pages;
Expand Down
8 changes: 8 additions & 0 deletions fs/btrfs/delayed-inode.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,23 @@
#ifndef BTRFS_DELAYED_INODE_H
#define BTRFS_DELAYED_INODE_H

#include <linux/types.h>
#include <linux/rbtree.h>
#include <linux/spinlock.h>
#include <linux/mutex.h>
#include <linux/list.h>
#include <linux/wait.h>
#include <linux/fs.h>
#include <linux/atomic.h>
#include <linux/refcount.h>
#include "ctree.h"

struct btrfs_disk_key;
struct btrfs_fs_info;
struct btrfs_inode;
struct btrfs_root;
struct btrfs_trans_handle;

enum btrfs_delayed_item_type {
BTRFS_DELAYED_INSERTION_ITEM,
BTRFS_DELAYED_DELETION_ITEM
Expand Down
16 changes: 12 additions & 4 deletions fs/btrfs/disk-io.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,21 @@
#define BTRFS_DISK_IO_H

#include <linux/sizes.h>
#include <linux/compiler_types.h>
#include "ctree.h"
#include "fs.h"

struct block_device;
struct super_block;
struct extent_buffer;
struct btrfs_device;
struct btrfs_fs_devices;
struct btrfs_fs_info;
struct btrfs_super_block;
struct btrfs_trans_handle;
struct btrfs_tree_parent_check;
struct btrfs_transaction;

#define BTRFS_SUPER_MIRROR_MAX 3
#define BTRFS_SUPER_MIRROR_SHIFT 12

Expand All @@ -29,10 +41,6 @@ static inline u64 btrfs_sb_offset(int mirror)
return BTRFS_SUPER_INFO_OFFSET;
}

struct btrfs_device;
struct btrfs_fs_devices;
struct btrfs_tree_parent_check;

void btrfs_check_leaked_roots(struct btrfs_fs_info *fs_info);
void btrfs_init_fs_info(struct btrfs_fs_info *fs_info);
struct extent_buffer *read_tree_block(struct btrfs_fs_info *fs_info, u64 bytenr,
Expand Down
7 changes: 7 additions & 0 deletions fs/btrfs/extent-io-tree.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,16 @@
#ifndef BTRFS_EXTENT_IO_TREE_H
#define BTRFS_EXTENT_IO_TREE_H

#include <linux/rbtree.h>
#include <linux/spinlock.h>
#include <linux/refcount.h>
#include <linux/list.h>
#include <linux/wait.h>
#include "misc.h"

struct extent_changeset;
struct btrfs_fs_info;
struct btrfs_inode;

/* Bits for the extent state */
enum {
Expand Down
9 changes: 9 additions & 0 deletions fs/btrfs/extent-tree.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,20 @@
#ifndef BTRFS_EXTENT_TREE_H
#define BTRFS_EXTENT_TREE_H

#include <linux/types.h>
#include "misc.h"
#include "block-group.h"
#include "locking.h"

struct extent_buffer;
struct btrfs_free_cluster;
struct btrfs_fs_info;
struct btrfs_root;
struct btrfs_path;
struct btrfs_disk_key;
struct btrfs_delayed_ref_head;
struct btrfs_delayed_ref_root;
struct btrfs_extent_inline_ref;

enum btrfs_extent_allocation_policy {
BTRFS_EXTENT_ALLOC_CLUSTERED,
Expand Down
25 changes: 20 additions & 5 deletions fs/btrfs/extent_io.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,32 @@
#include <linux/refcount.h>
#include <linux/fiemap.h>
#include <linux/btrfs_tree.h>
#include <linux/spinlock.h>
#include <linux/atomic.h>
#include <linux/rwsem.h>
#include <linux/list.h>
#include <linux/slab.h>
#include "compression.h"
#include "messages.h"
#include "ulist.h"
#include "misc.h"

struct page;
struct file;
struct folio;
struct inode;
struct fiemap_extent_info;
struct readahead_control;
struct address_space;
struct writeback_control;
struct extent_io_tree;
struct extent_map_tree;
struct btrfs_block_group;
struct btrfs_fs_info;
struct btrfs_inode;
struct btrfs_root;
struct btrfs_trans_handle;
struct btrfs_tree_parent_check;

enum {
EXTENT_BUFFER_UPTODATE,
Expand Down Expand Up @@ -64,11 +84,6 @@ enum {
#define BITMAP_LAST_BYTE_MASK(nbits) \
(BYTE_MASK >> (-(nbits) & (BITS_PER_BYTE - 1)))

struct btrfs_root;
struct btrfs_inode;
struct btrfs_fs_info;
struct extent_io_tree;
struct btrfs_tree_parent_check;

int __init extent_buffer_init_cachep(void);
void __cold extent_buffer_free_cachep(void);
Expand Down
7 changes: 7 additions & 0 deletions fs/btrfs/extent_map.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,18 @@
#ifndef BTRFS_EXTENT_MAP_H
#define BTRFS_EXTENT_MAP_H

#include <linux/compiler_types.h>
#include <linux/rwlock_types.h>
#include <linux/rbtree.h>
#include <linux/list.h>
#include <linux/refcount.h>
#include "misc.h"
#include "extent_map.h"
#include "compression.h"

struct btrfs_inode;
struct btrfs_fs_info;

#define EXTENT_MAP_LAST_BYTE ((u64)-4)
#define EXTENT_MAP_HOLE ((u64)-3)
#define EXTENT_MAP_INLINE ((u64)-2)
Expand Down
11 changes: 11 additions & 0 deletions fs/btrfs/file-item.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,20 @@
#ifndef BTRFS_FILE_ITEM_H
#define BTRFS_FILE_ITEM_H

#include <linux/list.h>
#include <uapi/linux/btrfs_tree.h>
#include "accessors.h"

struct extent_map;
struct btrfs_file_extent_item;
struct btrfs_fs_info;
struct btrfs_path;
struct btrfs_bio;
struct btrfs_trans_handle;
struct btrfs_root;
struct btrfs_ordered_sum;
struct btrfs_path;
struct btrfs_inode;

#define BTRFS_FILE_EXTENT_INLINE_DATA_START \
(offsetof(struct btrfs_file_extent_item, disk_bytenr))
Expand Down
13 changes: 13 additions & 0 deletions fs/btrfs/free-space-cache.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,19 @@
#ifndef BTRFS_FREE_SPACE_CACHE_H
#define BTRFS_FREE_SPACE_CACHE_H

#include <linux/rbtree.h>
#include <linux/list.h>
#include <linux/spinlock.h>
#include <linux/mutex.h>
#include "fs.h"

struct inode;
struct page;
struct btrfs_fs_info;
struct btrfs_path;
struct btrfs_trans_handle;
struct btrfs_trim_block_group;

/*
* This is the trim state of an extent or bitmap.
*
Expand Down
6 changes: 6 additions & 0 deletions fs/btrfs/free-space-tree.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@
#ifndef BTRFS_FREE_SPACE_TREE_H
#define BTRFS_FREE_SPACE_TREE_H

#include <linux/bits.h>

struct btrfs_caching_control;
struct btrfs_fs_info;
struct btrfs_path;
struct btrfs_block_group;
struct btrfs_trans_handle;

/*
* The default size for new free space bitmap items. The last bitmap in a block
Expand Down
5 changes: 3 additions & 2 deletions fs/btrfs/inode-item.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@
#include <linux/types.h>
#include <linux/crc32c.h>

struct fscrypt_str;
struct extent_buffer;
struct btrfs_trans_handle;
struct btrfs_root;
struct btrfs_path;
struct btrfs_key;
struct btrfs_inode_extref;
struct btrfs_inode;
struct extent_buffer;
struct fscrypt_str;
struct btrfs_truncate_control;

/*
* Return this if we need to call truncate_block for the last bit of the
Expand Down
8 changes: 6 additions & 2 deletions fs/btrfs/locking.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,14 @@

#include <linux/atomic.h>
#include <linux/wait.h>
#include <linux/lockdep.h>
#include <linux/percpu_counter.h>
#include "extent_io.h"
#include "locking.h"

struct extent_buffer;
struct btrfs_path;
struct btrfs_root;

#define BTRFS_WRITE_LOCK 1
#define BTRFS_READ_LOCK 2
Expand Down Expand Up @@ -157,8 +163,6 @@ enum btrfs_lockdep_trans_states {
static_assert(BTRFS_NESTING_MAX <= MAX_LOCKDEP_SUBCLASSES,
"too many lock subclasses defined");

struct btrfs_path;

void __btrfs_tree_lock(struct extent_buffer *eb, enum btrfs_lock_nesting nest);
void btrfs_tree_lock(struct extent_buffer *eb);
void btrfs_tree_unlock(struct extent_buffer *eb);
Expand Down
2 changes: 2 additions & 0 deletions fs/btrfs/lru_cache.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
#ifndef BTRFS_LRU_CACHE_H
#define BTRFS_LRU_CACHE_H

#include <linux/types.h>
#include <linux/maple_tree.h>
#include <linux/list.h>
#include "lru_cache.h"

/*
* A cache entry. This is meant to be embedded in a structure of a user of
Expand Down
2 changes: 2 additions & 0 deletions fs/btrfs/misc.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
#ifndef BTRFS_MISC_H
#define BTRFS_MISC_H

#include <linux/types.h>
#include <linux/bitmap.h>
#include <linux/sched.h>
#include <linux/wait.h>
#include <linux/math64.h>
Expand Down
13 changes: 13 additions & 0 deletions fs/btrfs/ordered-data.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,21 @@
#ifndef BTRFS_ORDERED_DATA_H
#define BTRFS_ORDERED_DATA_H

#include <linux/types.h>
#include <linux/list.h>
#include <linux/refcount.h>
#include <linux/completion.h>
#include <linux/rbtree.h>
#include <linux/wait.h>
#include "async-thread.h"

struct inode;
struct page;
struct extent_state;
struct btrfs_inode;
struct btrfs_root;
struct btrfs_fs_info;

struct btrfs_ordered_sum {
/*
* Logical start address and length for of the blocks covered by
Expand Down
9 changes: 9 additions & 0 deletions fs/btrfs/raid56.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,18 @@
#ifndef BTRFS_RAID56_H
#define BTRFS_RAID56_H

#include <linux/types.h>
#include <linux/list.h>
#include <linux/spinlock.h>
#include <linux/bio.h>
#include <linux/refcount.h>
#include <linux/workqueue.h>
#include "volumes.h"

struct page;
struct sector_ptr;
struct btrfs_fs_info;

enum btrfs_rbio_ops {
BTRFS_RBIO_WRITE,
BTRFS_RBIO_READ_REBUILD,
Expand Down
8 changes: 5 additions & 3 deletions fs/btrfs/send.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@
#define BTRFS_SEND_H

#include <linux/types.h>
#include <linux/sizes.h>
#include <linux/align.h>

struct inode;
struct btrfs_ioctl_send_args;

#define BTRFS_SEND_STREAM_MAGIC "btrfs-stream"
/* Conditional support for the upcoming protocol version. */
Expand All @@ -25,9 +30,6 @@
#define BTRFS_SEND_BUF_SIZE_V1 SZ_64K
#define BTRFS_SEND_BUF_SIZE_V2 ALIGN(SZ_16K + BTRFS_MAX_COMPRESSED, PAGE_SIZE)

struct inode;
struct btrfs_ioctl_send_args;

enum btrfs_tlv_type {
BTRFS_TLV_U8,
BTRFS_TLV_U16,
Expand Down
Loading

0 comments on commit 602035d

Please sign in to comment.