From: Krister Johansen <kjlx@templeofstupid.com>
To: Theodore Ts'o <tytso@mit.edu>
Cc: linux-ext4@vger.kernel.org
Subject: Re: [e2fsprogs PATCH] resize2fs: use directio when reading superblock
Date: Fri, 9 Jun 2023 19:11:31 -0700 [thread overview]
Message-ID: <20230610021131.GA6134@templeofstupid.com> (raw)
In-Reply-To: <20230609042239.GA1436857@mit.edu>
Hi Ted,
On Fri, Jun 09, 2023 at 12:22:39AM -0400, Theodore Ts'o wrote:
> On Wed, Jun 07, 2023 at 11:50:41AM -0700, Krister Johansen wrote:
> > The growpart / resize2fs in the reproducer are essentially verbatim from
> > our system provisioning scripts. Unless those modify the UUID, we're
> > not taking any explicit action to do so.
>
> Ah, OK. OK, I'm guessing that your system provisioning scripts are
> attempting mess with the file system a lot (creating, deleting, etc.)
> files while trying to run resize2fs in parallel, then?
The growpart and resize bits are triggered out of cloud-init when the
machine initially boots. Some provisioning steps are machine-type
depenent. The instances in which this problem have manifested are on
machines where the initial provisioning has more to do. It's also on
machine types that are frequently provisioned. I, unfortunately, only
get to look at these machines once they break. It's been hard to say
whether it's because some other step of the provisioning is happening in
parallel, or if the probability is roughly the same, and these systems
are hitting it because more come and go. I wish I had a better answer
for you. :/
> As far as your patch is concerned, resize2fs can do both off-line
> (unmounted) and on-line (mounted) resizes. And turning direct I/O
> unconditionally isn't a great idea for off-line resizes --- it will
> really trash the performance of the resize.
Thanks for the additional detail.
I also double-checked to make sure these systems had the following patch
applied:
05c2c00f3769 ext4: protect superblock modifications with a buffer lock
And they do. Not sure if that's directly applicable to the online
resize case though.
> Does this patch work for you instead?
Thanks, it does!
> - Ted
>
> diff --git a/resize/main.c b/resize/main.c
> index 94f5ec6d..f914c050 100644
> --- a/resize/main.c
> +++ b/resize/main.c
> @@ -409,6 +409,8 @@ int main (int argc, char ** argv)
>
> if (!(mount_flags & EXT2_MF_MOUNTED) && !print_min_size)
> io_flags = EXT2_FLAG_RW | EXT2_FLAG_EXCLUSIVE;
> + if (mount_flags & EXT2_MF_MOUNTED)
> + io_flags |= EXT2_FLAG_DIRECT_IO;
>
> io_flags |= EXT2_FLAG_64BITS | EXT2_FLAG_THREADS;
> if (undo_file) {
If it counts:
Reviewed-by: Krister Johansen <kjlx@templeofstupid.com>
Tested-by: Krister Johansen <kjlx@templeofstupid.com>
Thanks again,
-K
next prev parent reply other threads:[~2023-06-10 2:11 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-05 22:52 [e2fsprogs PATCH] resize2fs: use directio when reading superblock Krister Johansen
2023-06-07 13:39 ` Theodore Ts'o
2023-06-07 18:50 ` Krister Johansen
2023-06-09 4:22 ` Theodore Ts'o
2023-06-10 2:11 ` Krister Johansen [this message]
2023-06-28 23:02 ` Krister Johansen
2023-08-17 0:37 ` Krister Johansen
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=20230610021131.GA6134@templeofstupid.com \
--to=kjlx@templeofstupid.com \
--cc=linux-ext4@vger.kernel.org \
--cc=tytso@mit.edu \
/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).