From: "Theodore Ts'o" <tytso@mit.edu>
To: Wang Jianchao <jianchao.wan9@gmail.com>
Cc: linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org,
adilger.kernel@dilger.ca
Subject: Re: [PATCH V3 4/5] ext4: get discard out of jbd2 commit kthread contex
Date: Thu, 12 Aug 2021 15:46:50 -0400 [thread overview]
Message-ID: <YRV6qqZcsNBHZzyn@mit.edu> (raw)
In-Reply-To: <20210724074124.25731-5-jianchao.wan9@gmail.com>
On Sat, Jul 24, 2021 at 03:41:23PM +0800, Wang Jianchao wrote:
> diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
> index 34be2f07449d..a496509e61b7 100644
> --- a/fs/ext4/mballoc.c
> +++ b/fs/ext4/mballoc.c
> @@ -3474,6 +3530,14 @@ int ext4_mb_release(struct super_block *sb)
> struct kmem_cache *cachep = get_groupinfo_cache(sb->s_blocksize_bits);
> int count;
>
> + if (test_opt(sb, DISCARD)) {
> + /*
> + * wait the discard work to drain all of ext4_free_data
> + */
> + queue_work(ext4_discard_wq, &sbi->s_discard_work);
> + flush_work(&sbi->s_discard_work);
I agree with Jan --- it's not clear to me why the call to queue_work()
is needed. After the flush_work() call returns, if s_discard_work is
still non-empty, there must be something terribly wrong --- are we
missing something?
> @@ -3672,8 +3724,14 @@ int __init ext4_init_mballoc(void)
> if (ext4_free_data_cachep == NULL)
> goto out_ac_free;
>
> + ext4_discard_wq = alloc_workqueue("ext4discard", WQ_UNBOUND, 0);
> + if (!ext4_discard_wq)
> + goto out_free_data;
> +
Perhaps we should only allocate the workqueue when it's needed ---
e.g., when a file system is mounted or remounted with "-o discard"?
Then in ext4_exit_malloc(), we only free it if ext4_discard_wq is
non-NULL.
This would save a bit of memory on systems that wouldn't need the ext4
discard work queue.
- Ted
next prev parent reply other threads:[~2021-08-12 19:46 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-24 7:41 [PATCH V3 0/5] ext4: get discard out of jbd2 commit context Wang Jianchao
2021-07-24 7:41 ` [PATCH V3 1/5] ext4: remove the 'group' parameter of ext4_trim_extent Wang Jianchao
2021-07-26 3:42 ` Guoqing Jiang
2021-08-04 15:26 ` Jan Kara
2021-07-24 7:41 ` [PATCH V3 2/5] ext4: add new helper interface ext4_try_to_trim_range() Wang Jianchao
2021-08-04 15:29 ` Jan Kara
2021-08-12 17:44 ` Theodore Ts'o
2021-08-26 7:19 ` Wang Jianchao
2021-07-24 7:41 ` [PATCH V3 3/5] ext4: remove the repeated comment of ext4_trim_all_free Wang Jianchao
2021-08-04 15:27 ` Jan Kara
2021-07-24 7:41 ` [PATCH V3 4/5] ext4: get discard out of jbd2 commit kthread contex Wang Jianchao
2021-08-04 15:45 ` Jan Kara
2021-08-26 7:15 ` Wang Jianchao
2021-08-12 19:46 ` Theodore Ts'o [this message]
2021-08-26 7:51 ` Wang Jianchao
2021-08-26 8:58 ` Wang Jianchao
2021-07-24 7:41 ` [PATCH V3 5/5] ext4: make fallocate retry when err is ENOSPC Wang Jianchao
2021-07-26 3:40 ` Guoqing Jiang
2021-07-26 7:05 ` Wang Jianchao
2021-08-04 15:52 ` Jan Kara
2021-08-26 11:42 ` Wang Jianchao
2021-08-04 15:32 ` Jan Kara
2021-08-04 15:46 ` Jan Kara
-- strict thread matches above, loose matches on Subject: below --
2021-07-26 20:30 [PATCH V3 4/5] ext4: get discard out of jbd2 commit kthread contex kernel test robot
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=YRV6qqZcsNBHZzyn@mit.edu \
--to=tytso@mit.edu \
--cc=adilger.kernel@dilger.ca \
--cc=jianchao.wan9@gmail.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@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.