From: Zhang Yi <yi.zhang@huaweicloud.com>
To: linux-ext4@vger.kernel.org
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz,
ritesh.list@gmail.com, yi.zhang@huawei.com,
yi.zhang@huaweicloud.com, chengzhihao1@huawei.com,
yukuai3@huawei.com
Subject: [PATCH v3 03/12] ext4: don't set EXTENT_STATUS_DELAYED on allocated blocks
Date: Tue, 13 Aug 2024 20:34:43 +0800 [thread overview]
Message-ID: <20240813123452.2824659-4-yi.zhang@huaweicloud.com> (raw)
In-Reply-To: <20240813123452.2824659-1-yi.zhang@huaweicloud.com>
From: Zhang Yi <yi.zhang@huawei.com>
Currently, we release delayed allocation reservation when removing
delayed extent from extent status tree (which also happens when
overwriting one extent with another one). When we allocated unwritten
extent under some delayed allocated extent, we don't need the
reservation anymore and hence we don't need to preserve the
EXT4_MAP_DELAYED status bit. Allocating the new extent blocks will
properly release the reservation.
Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
---
fs/ext4/extents_status.c | 9 +--------
fs/ext4/inode.c | 11 -----------
2 files changed, 1 insertion(+), 19 deletions(-)
diff --git a/fs/ext4/extents_status.c b/fs/ext4/extents_status.c
index 17dcf13adde2..024cd37d53b3 100644
--- a/fs/ext4/extents_status.c
+++ b/fs/ext4/extents_status.c
@@ -869,14 +869,7 @@ void ext4_es_insert_extent(struct inode *inode, ext4_lblk_t lblk,
return;
BUG_ON(end < lblk);
-
- if ((status & EXTENT_STATUS_DELAYED) &&
- (status & EXTENT_STATUS_WRITTEN)) {
- ext4_warning(inode->i_sb, "Inserting extent [%u/%u] as "
- " delayed and written which can potentially "
- " cause data loss.", lblk, len);
- WARN_ON(1);
- }
+ WARN_ON_ONCE(status & EXTENT_STATUS_DELAYED);
newes.es_lblk = lblk;
newes.es_len = len;
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 91b2610a6dc5..e9ce1e4e6acb 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -558,12 +558,6 @@ static int ext4_map_create_blocks(handle_t *handle, struct inode *inode,
status = map->m_flags & EXT4_MAP_UNWRITTEN ?
EXTENT_STATUS_UNWRITTEN : EXTENT_STATUS_WRITTEN;
- if (!(flags & EXT4_GET_BLOCKS_DELALLOC_RESERVE) &&
- !(status & EXTENT_STATUS_WRITTEN) &&
- ext4_es_scan_range(inode, &ext4_es_is_delayed, map->m_lblk,
- map->m_lblk + map->m_len - 1))
- status |= EXTENT_STATUS_DELAYED;
-
ext4_es_insert_extent(inode, map->m_lblk, map->m_len,
map->m_pblk, status);
@@ -682,11 +676,6 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode,
status = map->m_flags & EXT4_MAP_UNWRITTEN ?
EXTENT_STATUS_UNWRITTEN : EXTENT_STATUS_WRITTEN;
- if (!(flags & EXT4_GET_BLOCKS_DELALLOC_RESERVE) &&
- !(status & EXTENT_STATUS_WRITTEN) &&
- ext4_es_scan_range(inode, &ext4_es_is_delayed, map->m_lblk,
- map->m_lblk + map->m_len - 1))
- status |= EXTENT_STATUS_DELAYED;
ext4_es_insert_extent(inode, map->m_lblk, map->m_len,
map->m_pblk, status);
}
--
2.39.2
next prev parent reply other threads:[~2024-08-13 12:39 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-13 12:34 [PATCH v3 00/12] ext4: simplify the counting and management of delalloc reserved blocks Zhang Yi
2024-08-13 12:34 ` [PATCH v3 01/12] ext4: factor out ext4_map_create_blocks() to allocate new blocks Zhang Yi
2024-08-13 12:34 ` [PATCH v3 02/12] ext4: optimize the EXT4_GET_BLOCKS_DELALLOC_RESERVE flag set Zhang Yi
2024-08-13 12:34 ` Zhang Yi [this message]
2024-08-13 12:34 ` [PATCH v3 04/12] ext4: let __revise_pending() return newly inserted pendings Zhang Yi
2024-09-04 10:15 ` Jan Kara
2024-09-04 10:23 ` Jan Kara
2024-08-13 12:34 ` [PATCH v3 05/12] ext4: passing block allocation information to ext4_es_insert_extent() Zhang Yi
2024-09-04 10:21 ` Jan Kara
2024-09-04 11:43 ` Zhang Yi
2024-08-13 12:34 ` [PATCH v3 06/12] ext4: update delalloc data reserve spcae in ext4_es_insert_extent() Zhang Yi
2024-09-04 10:22 ` Jan Kara
2024-08-13 12:34 ` [PATCH v3 07/12] ext4: drop ext4_es_delayed_clu() Zhang Yi
2024-09-04 10:25 ` Jan Kara
2024-08-13 12:34 ` [PATCH v3 08/12] ext4: use ext4_map_query_blocks() in ext4_map_blocks() Zhang Yi
2024-08-13 12:34 ` [PATCH v3 09/12] ext4: drop unused ext4_es_store_status() Zhang Yi
2024-09-04 10:25 ` Jan Kara
2024-08-13 12:34 ` [PATCH v3 10/12] ext4: make extent status types exclusive Zhang Yi
2024-09-04 10:28 ` Jan Kara
2024-08-13 12:34 ` [PATCH v3 11/12] ext4: drop ext4_es_is_delonly() Zhang Yi
2024-09-04 10:28 ` Jan Kara
2024-08-13 12:34 ` [PATCH v3 12/12] ext4: drop all delonly descriptions Zhang Yi
2024-09-04 10:31 ` Jan Kara
2024-09-05 14:53 ` [PATCH v3 00/12] ext4: simplify the counting and management of delalloc reserved blocks 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=20240813123452.2824659-4-yi.zhang@huaweicloud.com \
--to=yi.zhang@huaweicloud.com \
--cc=adilger.kernel@dilger.ca \
--cc=chengzhihao1@huawei.com \
--cc=jack@suse.cz \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ritesh.list@gmail.com \
--cc=tytso@mit.edu \
--cc=yi.zhang@huawei.com \
--cc=yukuai3@huawei.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).