]> git.baikalelectronics.ru Git - kernel.git/commit
ext4: Avoid unnecessary revokes in ext4_alloc_branch()
authorJan Kara <jack@suse.cz>
Tue, 5 Nov 2019 16:44:15 +0000 (17:44 +0100)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 5 Nov 2019 21:00:47 +0000 (16:00 -0500)
commit08c1dd9f50a900510d394290b5070d43e069d7bb
treebe60efe44093c35e78bf5f87259f27f94d2b7bf7
parentfa7c4afc365adbc9f34a8ce8e7404be4efec21b7
ext4: Avoid unnecessary revokes in ext4_alloc_branch()

Error cleanup path in ext4_alloc_branch() calls ext4_forget() on freshly
allocated indirect blocks with 'metadata' set to 1. This results in
generating revoke records for these blocks. However this is unnecessary
as the freed blocks are only allocated in the current transaction and
thus they will never be journalled. Make this cleanup path similar to
e.g. cleanup in ext4_splice_branch() and use ext4_free_blocks() to
handle block forgetting by passing EXT4_FREE_BLOCKS_FORGET and not
EXT4_FREE_BLOCKS_METADATA to ext4_free_blocks(). This also allows
allocating transaction not to reserve any credits for revoke records.

Reviewed-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20191105164437.32602-9-jack@suse.cz
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/indirect.c