]> git.dujemihanovic.xyz Git - linux.git/commitdiff
btrfs: add a flush step for delayed iputs
authorJosef Bacik <josef@toxicpanda.com>
Thu, 1 Aug 2019 22:19:33 +0000 (18:19 -0400)
committerDavid Sterba <dsterba@suse.com>
Mon, 9 Sep 2019 12:59:10 +0000 (14:59 +0200)
Delayed iputs could very well free up enough space without needing to
commit the transaction, so make this step it's own step.  This will
allow us to skip the step for evictions in a later patch.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ctree.h
fs/btrfs/space-info.c
include/trace/events/btrfs.h

index 85b808e3ea423880e87b49f0d204f09c03c5dae5..4ad4715a794108db298bf277747358e56e408af2 100644 (file)
@@ -2548,7 +2548,8 @@ enum btrfs_flush_state {
        FLUSH_DELALLOC_WAIT     =       6,
        ALLOC_CHUNK             =       7,
        ALLOC_CHUNK_FORCE       =       8,
-       COMMIT_TRANS            =       9,
+       RUN_DELAYED_IPUTS       =       9,
+       COMMIT_TRANS            =       10,
 };
 
 int btrfs_subvolume_reserve_metadata(struct btrfs_root *root,
index e9406b2133d1e3bdeee9154a2f83b79fa2d50705..1f4e97070f3346d5893994c58ca1e8a60f4e6368 100644 (file)
@@ -664,7 +664,7 @@ static void flush_space(struct btrfs_fs_info *fs_info,
                if (ret > 0 || ret == -ENOSPC)
                        ret = 0;
                break;
-       case COMMIT_TRANS:
+       case RUN_DELAYED_IPUTS:
                /*
                 * If we have pending delayed iputs then we could free up a
                 * bunch of pinned space, so make sure we run the iputs before
@@ -672,7 +672,8 @@ static void flush_space(struct btrfs_fs_info *fs_info,
                 */
                btrfs_run_delayed_iputs(fs_info);
                btrfs_wait_on_delayed_iputs(fs_info);
-
+               break;
+       case COMMIT_TRANS:
                ret = may_commit_transaction(fs_info, space_info);
                break;
        default:
index 5cb95646b94ec585aff94bee91e9ea34ef1c929e..5df604de4f11937679c628c967de885cbbf7634f 100644 (file)
@@ -1088,6 +1088,7 @@ TRACE_EVENT(btrfs_trigger_flush,
                { FLUSH_DELAYED_REFS,           "FLUSH_ELAYED_REFS"},           \
                { ALLOC_CHUNK,                  "ALLOC_CHUNK"},                 \
                { ALLOC_CHUNK_FORCE,            "ALLOC_CHUNK_FORCE"},           \
+               { RUN_DELAYED_IPUTS,            "RUN_DELAYED_IPUTS"},           \
                { COMMIT_TRANS,                 "COMMIT_TRANS"})
 
 TRACE_EVENT(btrfs_flush_space,