btrfs: move btrfs_block_rsv definitions into it's own header
authorJosef Bacik <josef@toxicpanda.com>
Wed, 19 Jun 2019 17:47:17 +0000 (13:47 -0400)
committerDavid Sterba <dsterba@suse.com>
Tue, 2 Jul 2019 10:30:53 +0000 (12:30 +0200)
Prep work for separating out all of the block_rsv related code into its
own file.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/block-rsv.h [new file with mode: 0644]
fs/btrfs/ctree.h
fs/btrfs/extent-tree.c

diff --git a/fs/btrfs/block-rsv.h b/fs/btrfs/block-rsv.h
new file mode 100644 (file)
index 0000000..359e73d
--- /dev/null
@@ -0,0 +1,77 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#ifndef BTRFS_BLOCK_RSV_H
+#define BTRFS_BLOCK_RSV_H
+
+enum btrfs_reserve_flush_enum;
+
+/*
+ * Types of block reserves
+ */
+enum {
+       BTRFS_BLOCK_RSV_GLOBAL,
+       BTRFS_BLOCK_RSV_DELALLOC,
+       BTRFS_BLOCK_RSV_TRANS,
+       BTRFS_BLOCK_RSV_CHUNK,
+       BTRFS_BLOCK_RSV_DELOPS,
+       BTRFS_BLOCK_RSV_DELREFS,
+       BTRFS_BLOCK_RSV_EMPTY,
+       BTRFS_BLOCK_RSV_TEMP,
+};
+
+struct btrfs_block_rsv {
+       u64 size;
+       u64 reserved;
+       struct btrfs_space_info *space_info;
+       spinlock_t lock;
+       unsigned short full;
+       unsigned short type;
+       unsigned short failfast;
+
+       /*
+        * Qgroup equivalent for @size @reserved
+        *
+        * Unlike normal @size/@reserved for inode rsv, qgroup doesn't care
+        * about things like csum size nor how many tree blocks it will need to
+        * reserve.
+        *
+        * Qgroup cares more about net change of the extent usage.
+        *
+        * So for one newly inserted file extent, in worst case it will cause
+        * leaf split and level increase, nodesize for each file extent is
+        * already too much.
+        *
+        * In short, qgroup_size/reserved is the upper limit of possible needed
+        * qgroup metadata reservation.
+        */
+       u64 qgroup_rsv_size;
+       u64 qgroup_rsv_reserved;
+};
+
+void btrfs_init_block_rsv(struct btrfs_block_rsv *rsv, unsigned short type);
+struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_fs_info *fs_info,
+                                             unsigned short type);
+void btrfs_init_metadata_block_rsv(struct btrfs_fs_info *fs_info,
+                                  struct btrfs_block_rsv *rsv,
+                                  unsigned short type);
+void btrfs_free_block_rsv(struct btrfs_fs_info *fs_info,
+                         struct btrfs_block_rsv *rsv);
+int btrfs_block_rsv_add(struct btrfs_root *root,
+                       struct btrfs_block_rsv *block_rsv, u64 num_bytes,
+                       enum btrfs_reserve_flush_enum flush);
+int btrfs_block_rsv_check(struct btrfs_block_rsv *block_rsv, int min_factor);
+int btrfs_block_rsv_refill(struct btrfs_root *root,
+                          struct btrfs_block_rsv *block_rsv, u64 min_reserved,
+                          enum btrfs_reserve_flush_enum flush);
+int btrfs_block_rsv_migrate(struct btrfs_block_rsv *src_rsv,
+                           struct btrfs_block_rsv *dst_rsv, u64 num_bytes,
+                           bool update_size);
+int btrfs_block_rsv_use_bytes(struct btrfs_block_rsv *block_rsv, u64 num_bytes);
+int btrfs_cond_migrate_bytes(struct btrfs_fs_info *fs_info,
+                            struct btrfs_block_rsv *dest, u64 num_bytes,
+                            int min_factor);
+void btrfs_block_rsv_release(struct btrfs_fs_info *fs_info,
+                            struct btrfs_block_rsv *block_rsv,
+                            u64 num_bytes);
+
+#endif /* BTRFS_BLOCK_RSV_H */
index b78470fdc226d7cc5a62cb14cd4a9f193eca15af..adb6d2747e0c75ac7e198601e75311defc19efe8 100644 (file)
@@ -32,6 +32,7 @@
 #include "extent_io.h"
 #include "extent_map.h"
 #include "async-thread.h"
+#include "block-rsv.h"
 
 struct btrfs_trans_handle;
 struct btrfs_transaction;
@@ -403,49 +404,6 @@ struct raid_kobject {
        struct list_head list;
 };
 
-/*
- * Types of block reserves
- */
-enum {
-       BTRFS_BLOCK_RSV_GLOBAL,
-       BTRFS_BLOCK_RSV_DELALLOC,
-       BTRFS_BLOCK_RSV_TRANS,
-       BTRFS_BLOCK_RSV_CHUNK,
-       BTRFS_BLOCK_RSV_DELOPS,
-       BTRFS_BLOCK_RSV_DELREFS,
-       BTRFS_BLOCK_RSV_EMPTY,
-       BTRFS_BLOCK_RSV_TEMP,
-};
-
-struct btrfs_block_rsv {
-       u64 size;
-       u64 reserved;
-       struct btrfs_space_info *space_info;
-       spinlock_t lock;
-       unsigned short full;
-       unsigned short type;
-       unsigned short failfast;
-
-       /*
-        * Qgroup equivalent for @size @reserved
-        *
-        * Unlike normal @size/@reserved for inode rsv, qgroup doesn't care
-        * about things like csum size nor how many tree blocks it will need to
-        * reserve.
-        *
-        * Qgroup cares more about net change of the extent usage.
-        *
-        * So for one newly inserted file extent, in worst case it will cause
-        * leaf split and level increase, nodesize for each file extent is
-        * already too much.
-        *
-        * In short, qgroup_size/reserved is the upper limit of possible needed
-        * qgroup metadata reservation.
-        */
-       u64 qgroup_rsv_size;
-       u64 qgroup_rsv_reserved;
-};
-
 /*
  * free clusters are used to claim free space in relatively large chunks,
  * allowing us to do less seeky writes. They are used for all metadata
@@ -2826,31 +2784,6 @@ void btrfs_delalloc_release_metadata(struct btrfs_inode *inode, u64 num_bytes,
                                     bool qgroup_free);
 int btrfs_delalloc_reserve_space(struct inode *inode,
                        struct extent_changeset **reserved, u64 start, u64 len);
-void btrfs_init_block_rsv(struct btrfs_block_rsv *rsv, unsigned short type);
-struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_fs_info *fs_info,
-                                             unsigned short type);
-void btrfs_init_metadata_block_rsv(struct btrfs_fs_info *fs_info,
-                                  struct btrfs_block_rsv *rsv,
-                                  unsigned short type);
-void btrfs_free_block_rsv(struct btrfs_fs_info *fs_info,
-                         struct btrfs_block_rsv *rsv);
-int btrfs_block_rsv_add(struct btrfs_root *root,
-                       struct btrfs_block_rsv *block_rsv, u64 num_bytes,
-                       enum btrfs_reserve_flush_enum flush);
-int btrfs_block_rsv_check(struct btrfs_block_rsv *block_rsv, int min_factor);
-int btrfs_block_rsv_refill(struct btrfs_root *root,
-                          struct btrfs_block_rsv *block_rsv, u64 min_reserved,
-                          enum btrfs_reserve_flush_enum flush);
-int btrfs_block_rsv_migrate(struct btrfs_block_rsv *src_rsv,
-                           struct btrfs_block_rsv *dst_rsv, u64 num_bytes,
-                           bool update_size);
-int btrfs_block_rsv_use_bytes(struct btrfs_block_rsv *block_rsv, u64 num_bytes);
-int btrfs_cond_migrate_bytes(struct btrfs_fs_info *fs_info,
-                            struct btrfs_block_rsv *dest, u64 num_bytes,
-                            int min_factor);
-void btrfs_block_rsv_release(struct btrfs_fs_info *fs_info,
-                            struct btrfs_block_rsv *block_rsv,
-                            u64 num_bytes);
 void btrfs_delayed_refs_rsv_release(struct btrfs_fs_info *fs_info, int nr);
 void btrfs_update_delayed_refs_rsv(struct btrfs_trans_handle *trans);
 int btrfs_delayed_refs_rsv_refill(struct btrfs_fs_info *fs_info,
index c887f335234174a0249fcda8a5e3ed5ce6636485..3f2ccfed3b0e502c5daa302b179d2d04ae8d170f 100644 (file)
@@ -29,6 +29,7 @@
 #include "qgroup.h"
 #include "ref-verify.h"
 #include "space-info.h"
+#include "block-rsv.h"
 
 #undef SCRAMBLE_DELAYED_REFS