ext4: optimize ext4_ext_precache for 0 depth
This patch avoids the memory alloc & free path when depth is 0, since anyway there is no extra caching done in that case. So on checking depth 0, simply return early. Signed-off-by: Ritesh Harjani <riteshh@linux.ibm.com> Reviewed-by: Jan Kara <jack@suse.cz> Link: https://lore.kernel.org/r/93da0d0f073c73358e85bb9849d8a5378d1da539.1582880246.git.riteshh@linux.ibm.com Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
Родитель
6386722a32
Коммит
2f424a5a09
|
@ -549,6 +549,12 @@ int ext4_ext_precache(struct inode *inode)
|
|||
down_read(&ei->i_data_sem);
|
||||
depth = ext_depth(inode);
|
||||
|
||||
/* Don't cache anything if there are no external extent blocks */
|
||||
if (!depth) {
|
||||
up_read(&ei->i_data_sem);
|
||||
return ret;
|
||||
}
|
||||
|
||||
path = kcalloc(depth + 1, sizeof(struct ext4_ext_path),
|
||||
GFP_NOFS);
|
||||
if (path == NULL) {
|
||||
|
@ -556,9 +562,6 @@ int ext4_ext_precache(struct inode *inode)
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
/* Don't cache anything if there are no external extent blocks */
|
||||
if (depth == 0)
|
||||
goto out;
|
||||
path[0].p_hdr = ext_inode_hdr(inode);
|
||||
ret = ext4_ext_check(inode, path[0].p_hdr, depth, 0);
|
||||
if (ret)
|
||||
|
|
Загрузка…
Ссылка в новой задаче