All of lore.kernel.org
 help / color / mirror / Atom feed
From: Josef Bacik <josef@toxicpanda.com>
To: kernel-team@fb.com, linux-btrfs@vger.kernel.org
Subject: [PATCH 12/42] btrfs: don't use global rsv for chunk allocation
Date: Fri, 28 Sep 2018 07:17:51 -0400	[thread overview]
Message-ID: <20180928111821.24376-13-josef@toxicpanda.com> (raw)
In-Reply-To: <20180928111821.24376-1-josef@toxicpanda.com>

We've done this forever because of the voodoo around knowing how much
space we have.  However we have better ways of doing this now, and on
normal file systems we'll easily have a global reserve of 512MiB, and
since metadata chunks are usually 1GiB that means we'll allocate
metadata chunks more readily.  Instead use the actual used amount when
determining if we need to allocate a chunk or not.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 fs/btrfs/extent-tree.c | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index c9913c59686b..c0f6110419b2 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -4374,21 +4374,12 @@ static inline u64 calc_global_rsv_need_space(struct btrfs_block_rsv *global)
 static int should_alloc_chunk(struct btrfs_fs_info *fs_info,
 			      struct btrfs_space_info *sinfo, int force)
 {
-	struct btrfs_block_rsv *global_rsv = &fs_info->global_block_rsv;
 	u64 bytes_used = btrfs_space_info_used(sinfo, false);
 	u64 thresh;
 
 	if (force == CHUNK_ALLOC_FORCE)
 		return 1;
 
-	/*
-	 * We need to take into account the global rsv because for all intents
-	 * and purposes it's used space.  Don't worry about locking the
-	 * global_rsv, it doesn't change except when the transaction commits.
-	 */
-	if (sinfo->flags & BTRFS_BLOCK_GROUP_METADATA)
-		bytes_used += calc_global_rsv_need_space(global_rsv);
-
 	/*
 	 * in limited mode, we want to have some free space up to
 	 * about 1% of the FS size.
-- 
2.14.3


  parent reply	other threads:[~2018-09-28 11:18 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-28 11:17 [PATCH 00/42][v3] My current patch queue Josef Bacik
2018-09-28 11:17 ` [PATCH 01/42] btrfs: add btrfs_delete_ref_head helper Josef Bacik
2018-09-28 11:17 ` [PATCH 02/42] btrfs: add cleanup_ref_head_accounting helper Josef Bacik
2018-09-28 11:17 ` [PATCH 03/42] btrfs: cleanup extent_op handling Josef Bacik
2018-09-28 11:17 ` [PATCH 04/42] btrfs: only track ref_heads in delayed_ref_updates Josef Bacik
2018-09-28 11:17 ` [PATCH 05/42] btrfs: only count ref heads run in __btrfs_run_delayed_refs Josef Bacik
2018-09-28 11:17 ` [PATCH 06/42] btrfs: introduce delayed_refs_rsv Josef Bacik
2018-09-28 11:51   ` Nikolay Borisov
2018-09-28 11:58     ` Josef Bacik
2018-09-28 11:17 ` [PATCH 07/42] btrfs: check if free bgs for commit Josef Bacik
2018-10-04 11:24   ` David Sterba
2018-10-11 18:33     ` Josef Bacik
2018-10-12 16:50       ` David Sterba
2018-09-28 11:17 ` [PATCH 08/42] btrfs: dump block_rsv whe dumping space info Josef Bacik
2018-10-01 17:08   ` David Sterba
2018-09-28 11:17 ` [PATCH 09/42] btrfs: release metadata before running delayed refs Josef Bacik
2018-09-28 11:17 ` [PATCH 10/42] btrfs: protect space cache inode alloc with nofs Josef Bacik
2018-10-01 17:08   ` David Sterba
2018-09-28 11:17 ` [PATCH 11/42] btrfs: fix truncate throttling Josef Bacik
2018-09-28 11:17 ` Josef Bacik [this message]
2018-09-28 11:17 ` [PATCH 13/42] btrfs: add ALLOC_CHUNK_FORCE to the flushing code Josef Bacik
2018-09-28 11:17 ` [PATCH 14/42] btrfs: reset max_extent_size properly Josef Bacik
2018-09-28 11:17 ` [PATCH 15/42] btrfs: don't enospc all tickets on flush failure Josef Bacik
2018-09-28 11:17 ` [PATCH 16/42] btrfs: loop in inode_rsv_refill Josef Bacik
2018-10-02 13:47   ` David Sterba
2018-09-28 11:17 ` [PATCH 17/42] btrfs: run delayed iputs before committing Josef Bacik
2018-09-28 11:17 ` [PATCH 18/42] btrfs: move the dio_sem higher up the callchain Josef Bacik
2018-10-03 12:27   ` David Sterba
2018-10-03 14:54   ` Filipe Manana
2018-09-28 11:17 ` [PATCH 19/42] btrfs: set max_extent_size properly Josef Bacik
2018-09-28 11:17 ` [PATCH 20/42] btrfs: don't use ctl->free_space for max_extent_size Josef Bacik
2018-09-28 11:18 ` [PATCH 21/42] btrfs: reset max_extent_size on clear in a bitmap Josef Bacik
2018-09-28 11:18 ` [PATCH 22/42] btrfs: only run delayed refs if we're committing Josef Bacik
2018-09-28 11:18 ` [PATCH 23/42] btrfs: make sure we create all new bgs Josef Bacik
2018-10-08 13:45   ` David Sterba
2018-09-28 11:18 ` [PATCH 24/42] btrfs: assert on non-empty delayed iputs Josef Bacik
2018-10-08 13:44   ` David Sterba
2018-09-28 11:18 ` [PATCH 25/42] btrfs: pass delayed_refs_root to btrfs_delayed_ref_lock Josef Bacik
2018-09-28 11:18 ` [PATCH 26/42] btrfs: make btrfs_destroy_delayed_refs use btrfs_delayed_ref_lock Josef Bacik
2018-09-28 11:18 ` [PATCH 27/42] btrfs: make btrfs_destroy_delayed_refs use btrfs_delete_ref_head Josef Bacik
2018-09-28 11:18 ` [PATCH 28/42] btrfs: handle delayed ref head accounting cleanup in abort Josef Bacik
2018-09-28 11:18 ` [PATCH 29/42] btrfs: call btrfs_create_pending_block_groups unconditionally Josef Bacik
2018-09-28 11:18 ` [PATCH 30/42] btrfs: just delete pending bgs if we are aborted Josef Bacik
2018-09-28 11:18 ` [PATCH 31/42] btrfs: cleanup pending bgs on transaction abort Josef Bacik
2018-09-28 11:18 ` [PATCH 32/42] btrfs: only free reserved extent if we didn't insert it Josef Bacik
2018-09-28 11:18 ` [PATCH 33/42] btrfs: fix insert_reserved error handling Josef Bacik
2018-09-28 11:18 ` [PATCH 34/42] btrfs: wait on ordered extents on abort cleanup Josef Bacik
2018-09-28 11:18 ` [PATCH 35/42] MAINTAINERS: update my email address for btrfs Josef Bacik
2018-09-28 11:18 ` [PATCH 36/42] btrfs: wait on caching when putting the bg cache Josef Bacik
2018-10-01 17:17   ` David Sterba
2018-09-28 11:18 ` [PATCH 37/42] btrfs: wakeup cleaner thread when adding delayed iput Josef Bacik
2018-10-08 10:59   ` Filipe Manana
2018-09-28 11:18 ` [PATCH 38/42] btrfs: be more explicit about allowed flush states Josef Bacik
2018-09-28 11:18 ` [PATCH 39/42] btrfs: replace cleaner_delayed_iput_mutex with a waitqueue Josef Bacik
2018-09-28 11:18 ` [PATCH 40/42] btrfs: drop min_size from evict_refill_and_join Josef Bacik
2018-10-03 12:52   ` David Sterba
2018-09-28 11:18 ` [PATCH 41/42] btrfs: reserve extra space during evict() Josef Bacik
2018-09-28 11:18 ` [PATCH 42/42] btrfs: don't run delayed_iputs in commit Josef Bacik
2018-10-11 19:53 [PATCH 00/42][v4] My current patch queue Josef Bacik
2018-10-11 19:54 ` [PATCH 12/42] btrfs: don't use global rsv for chunk allocation Josef Bacik
2018-10-12 19:32 [PATCH 00/42][v5] My current patch queue Josef Bacik
2018-10-12 19:32 ` [PATCH 12/42] btrfs: don't use global rsv for chunk allocation Josef Bacik

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180928111821.24376-13-josef@toxicpanda.com \
    --to=josef@toxicpanda.com \
    --cc=kernel-team@fb.com \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.