linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Theodore Ts'o" <tytso@mit.edu>
To: Kemeng Shi <shikemeng@huaweicloud.com>
Cc: adilger.kernel@dilger.ca, ojaswin@linux.ibm.com,
	ritesh.list@gmail.com,
	Harshad Shirwadkar <harshadshirwadkar@gmail.com>,
	linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 20/20] ext4: simplify calculation of blkoff in ext4_mb_new_blocks_simple
Date: Thu, 16 Mar 2023 01:07:40 -0400	[thread overview]
Message-ID: <20230316050740.GL860405@mit.edu> (raw)
In-Reply-To: <20230303172120.3800725-21-shikemeng@huaweicloud.com>

On Sat, Mar 04, 2023 at 01:21:20AM +0800, Kemeng Shi wrote:
> We try to allocate a block from goal in ext4_mb_new_blocks_simple. We
> only need get blkoff in first group with goal and set blkoff to 0 for
> the rest groups.
> 
> Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com>

While this patch is OK as a simplification, there's a bigger problem
with ext4_mb_new_blocks_simple(), and that is that we start looking
for free blocks starting at the goal block, and then if we can't any
free blocks by the time we get to the last block group.... we stop,
and return ENOSPC.

This function is only used in the fast commit replay path, but for a
very full file system, this could cause a fast commit replay to fail
unnecesarily.  What we need to do is to try wrapping back to the
beginning of the file system, and stop when we hit the original group
(of the goal block) minus one.

We can fix this up in a separate patch, since this doesn't make things
any worse, but essentially we need to do something like this:

    	maxgroups = ext4_get_groups_count(sb);
	for (g = 0; g < maxgroups ; g++) {
	
		...
		group++;
		if (group > maxgroups)
			group = 0;
	}

					- Ted

  reply	other threads:[~2023-03-16  5:08 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-03 17:21 [PATCH v3 00/20] Some bugfix and cleanup to mballoc Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 01/20] ext4: set goal start correctly in ext4_mb_normalize_request Kemeng Shi
2023-03-13  2:07   ` Ritesh Harjani
2023-04-06  5:18   ` [PATCH v3 1/20] " Theodore Ts'o
2023-03-03 17:21 ` [PATCH v3 02/20] ext4: allow to find by goal if EXT4_MB_HINT_GOAL_ONLY is set Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 03/20] ext4: get correct ext4_group_info in ext4_mb_prefetch_fini Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 04/20] ext4: correct calculation of s_mb_preallocated Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 05/20] ext4: correct start of used group pa for debug in ext4_mb_use_group_pa Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 06/20] ext4: protect pa->pa_free in ext4_discard_allocated_blocks Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 07/20] ext4: add missed brelse in ext4_free_blocks_simple Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 08/20] ext4: remove unused return value of ext4_mb_try_best_found and ext4_mb_free_metadata Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 09/20] ext4: Remove unnecessary release when memory allocation failed in ext4_mb_init_cache Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 10/20] ext4: remove unnecessary e4b->bd_buddy_page check in ext4_mb_load_buddy_gfp Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 11/20] ext4: remove unnecessary check in ext4_mb_new_blocks Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 12/20] ext4: remove dead check in mb_buddy_mark_free Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 13/20] ext4: remove ac->ac_found > sbi->s_mb_min_to_scan dead check in ext4_mb_check_limits Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 14/20] ext4: use best found when complex scan of group finishs Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 15/20] ext4: remove unnecessary exit_meta_group_info tag Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 16/20] ext4: remove unnecessary count2 in ext4_free_data_in_buddy Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 17/20] ext4: remove unnecessary goto in ext4_mb_mark_diskspace_used Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 18/20] ext4: remove repeat assignment to ac_f_ex Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 19/20] ext4: remove comment code ext4_discard_preallocations Kemeng Shi
2023-03-03 17:21 ` [PATCH v3 20/20] ext4: simplify calculation of blkoff in ext4_mb_new_blocks_simple Kemeng Shi
2023-03-16  5:07   ` Theodore Ts'o [this message]
2023-03-16 10:19     ` Kemeng Shi
2023-03-17 15:50       ` Theodore Ts'o
2023-03-20  7:31         ` Kemeng Shi
2023-03-10  8:17 ` [PATCH v3 00/20] Some bugfix and cleanup to mballoc Kemeng Shi
2023-03-17  1:52 ` Theodore Ts'o

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=20230316050740.GL860405@mit.edu \
    --to=tytso@mit.edu \
    --cc=adilger.kernel@dilger.ca \
    --cc=harshadshirwadkar@gmail.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ojaswin@linux.ibm.com \
    --cc=ritesh.list@gmail.com \
    --cc=shikemeng@huaweicloud.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).