diff options
author | Zhang Yi <yi.zhang@huawei.com> | 2024-05-17 20:40:01 +0800 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2024-06-27 18:04:49 -0400 |
commit | 12eba993b94c9186e44a01f46e38b3ab3c635f2d (patch) | |
tree | b64945a89abed6d69cdec53778887156520551f4 /fs/ext4/extents_status.h | |
parent | bb6b18057f18e9b7f53a524721060652de151e8a (diff) | |
download | linux-12eba993b94c9186e44a01f46e38b3ab3c635f2d.tar.gz linux-12eba993b94c9186e44a01f46e38b3ab3c635f2d.tar.bz2 linux-12eba993b94c9186e44a01f46e38b3ab3c635f2d.zip |
ext4: make ext4_es_insert_delayed_block() insert multi-blocks
Rename ext4_es_insert_delayed_block() to ext4_es_insert_delayed_extent()
and pass length parameter to make it insert multiple delalloc blocks at
a time. For the case of bigalloc, split the allocated parameter to
lclu_allocated and end_allocated. lclu_allocated indicates the
allocation state of the cluster which is containing the lblk,
end_allocated indicates the allocation state of the extent end, clusters
in the middle of delay allocated extent must be unallocated.
Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/20240517124005.347221-7-yi.zhang@huaweicloud.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/extents_status.h')
-rw-r--r-- | fs/ext4/extents_status.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/ext4/extents_status.h b/fs/ext4/extents_status.h index d9847a4a25db..3c8e2edee5d5 100644 --- a/fs/ext4/extents_status.h +++ b/fs/ext4/extents_status.h @@ -249,8 +249,9 @@ extern void ext4_exit_pending(void); extern void ext4_init_pending_tree(struct ext4_pending_tree *tree); extern void ext4_remove_pending(struct inode *inode, ext4_lblk_t lblk); extern bool ext4_is_pending(struct inode *inode, ext4_lblk_t lblk); -extern void ext4_es_insert_delayed_block(struct inode *inode, ext4_lblk_t lblk, - bool allocated); +extern void ext4_es_insert_delayed_extent(struct inode *inode, ext4_lblk_t lblk, + ext4_lblk_t len, bool lclu_allocated, + bool end_allocated); extern unsigned int ext4_es_delayed_clu(struct inode *inode, ext4_lblk_t lblk, ext4_lblk_t len); extern void ext4_clear_inode_es(struct inode *inode); |