All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V4 0/5] ext4: get discard out of jbd2 commit kthread
@ 2021-08-30  7:52 Wang Jianchao
  2021-08-30  7:52 ` [PATCH V4 1/5] ext4: remove the 'group' parameter of ext4_trim_extent Wang Jianchao
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Wang Jianchao @ 2021-08-30  7:52 UTC (permalink / raw)
  To: tytso, adilger.kernel; +Cc: jack, guoqing.jiang, linux-kernel, linux-ext4

Hi all

This is the version 4 patch set that attempts to get discard out of the jbd2
commit kthread. When the user delete a lot data and cause discard flooding,
the jbd2 commit kthread can be blocked for very long time and then all of
the metadata operations are blocked due to no journal space.

The xfstest with following parameters,
MODULAR=0
TEST_DIR=/mnt/test
TEST_DEV=/dev/nbd37p1
SCRATCH_MNT=/mnt/scratch
SCRATCH_DEV=/dev/nbd37p2
MOUNT_OPTIONS="-o discard"
has passed. The result is consistent w/ or w/o this patch set.

There are 5 patches,

Patch 1 ~ 3, there are no functional changes in them, but just some preparation
for following patches

Patch 4 introduces a async kworker to do discard in fstrim fation which implements
the core idea of this patch set.

Patch 5 flush discard background work in ext4_should_retry_alloc, This fix the generic/371

Any comments are welcome ;)

V3 -> V4:
 - In patch 1, avoid modify two lines in patch 1 when remove 'grou'p parameter
 - In patch 4, remove redunbant queue_work() in ext4_mb_release(). And queue background
   discard work to system_unbound_wq as it is not a urgent task.
 - In patch 5, flush discard kwork in ext4_should_retry_alloc(), instead of invoke
   ext4_should_retry_alloc in fallocate again.
   
V2 -> V3
 - Get rid of the per block group rb tree which carries freed entry. It is not neccesary
   because we have done aggregation when wait for journal commit. Just use a list
   to carry the free entries.

V1 -> V2
 - free the blocks back to mb buddy after commit and then do ftrim fashion discard

 fs/ext4/balloc.c  |   8 ++-
 fs/ext4/ext4.h    |   3 ++
 fs/ext4/mballoc.c | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------
 3 files changed, 148 insertions(+), 79 deletions(-)


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-08-31  4:00 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-30  7:52 [PATCH V4 0/5] ext4: get discard out of jbd2 commit kthread Wang Jianchao
2021-08-30  7:52 ` [PATCH V4 1/5] ext4: remove the 'group' parameter of ext4_trim_extent Wang Jianchao
2021-08-30  7:52 ` [PATCH V4 2/5] ext4: add new helper interface ext4_try_to_trim_range() Wang Jianchao
2021-08-30  7:52 ` [PATCH V4 3/5] ext4: remove the repeated comment of ext4_trim_all_free Wang Jianchao
2021-08-30  7:52 ` [PATCH V4 4/5] ext4: get discard out of jbd2 commit kthread contex Wang Jianchao
2021-08-31  4:00   ` Theodore Ts'o
2021-08-30  7:52 ` [PATCH V4 5/5] ext4: flush background discard kwork when retry allocation Wang Jianchao

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.