btrfs: add comments for btrfs_reserve_flush_enum
authorQu Wenruo <wqu@suse.com>
Mon, 13 Jul 2020 01:03:22 +0000 (09:03 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 27 Jul 2020 10:55:45 +0000 (12:55 +0200)
This enum is the interface exposed to developers.

Although we have a detailed comment explaining the whole idea of space
flushing at the beginning of space-info.c, the exposed enum interface
doesn't have any comment.

Some corner cases, like BTRFS_RESERVE_FLUSH_ALL and
BTRFS_RESERVE_FLUSH_ALL_STEAL can be interrupted by fatal signals, are
not explained at all.

So add some simple comments for these enums as a quick reference.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ctree.h

index 050760d..b70c202 100644 (file)
@@ -2560,16 +2560,46 @@ int btrfs_inc_extent_ref(struct btrfs_trans_handle *trans,
 int btrfs_extent_readonly(struct btrfs_fs_info *fs_info, u64 bytenr);
 void btrfs_clear_space_info_full(struct btrfs_fs_info *info);
 
+/*
+ * Different levels for to flush space when doing space reservations.
+ *
+ * The higher the level, the more methods we try to reclaim space.
+ */
 enum btrfs_reserve_flush_enum {
        /* If we are in the transaction, we can't flush anything.*/
        BTRFS_RESERVE_NO_FLUSH,
+
        /*
-        * Flushing delalloc may cause deadlock somewhere, in this
-        * case, use FLUSH LIMIT
+        * Flush space by:
+        * - Running delayed inode items
+        * - Allocating a new chunk
         */
        BTRFS_RESERVE_FLUSH_LIMIT,
+
+       /*
+        * Flush space by:
+        * - Running delayed inode items
+        * - Running delayed refs
+        * - Running delalloc and waiting for ordered extents
+        * - Allocating a new chunk
+        */
        BTRFS_RESERVE_FLUSH_EVICT,
+
+       /*
+        * Flush space by above mentioned methods and by:
+        * - Running delayed iputs
+        * - Commiting transaction
+        *
+        * Can be interruped by fatal signal.
+        */
        BTRFS_RESERVE_FLUSH_ALL,
+
+       /*
+        * Pretty much the same as FLUSH_ALL, but can also steal space from
+        * global rsv.
+        *
+        * Can be interruped by fatal signal.
+        */
        BTRFS_RESERVE_FLUSH_ALL_STEAL,
 };