]> git.apps.os.sepia.ceph.com Git - xfsprogs-dev.git/commit
xfs: trim the mapp array accordingly in xfs_da_grow_inode_int
authorShida Zhang <zhangshida@kylinos.cn>
Fri, 18 Nov 2022 09:46:33 +0000 (10:46 +0100)
committerCarlos Maiolino <cem@kernel.org>
Mon, 21 Nov 2022 14:26:48 +0000 (15:26 +0100)
commit04d4c27afa3f2c0088e381102e68cfb6a96b3306
tree27773fddf2aa3242361b88c9b4c633f31c5b1869
parente8dbbca18d8d1aefaec35384c718828e64bbb4d1
xfs: trim the mapp array accordingly in xfs_da_grow_inode_int

Source kernel commit: 44159659df8ca381b84261e11058b2176fa03ba0

Take a look at the for-loop in xfs_da_grow_inode_int:
======
for(){
nmap = min(XFS_BMAP_MAX_NMAP, count);
...
error = xfs_bmapi_write(...,&mapp[mapi], &nmap);//(..., $1, $2)
...
mapi += nmap;
}
=====
where $1 stands for the start address of the array,
while $2 is used to indicate the size of the array.

The array $1 will advance by $nmap in each iteration after
the allocation of extents.
But the size $2 still remains unchanged, which is determined by
min(XFS_BMAP_MAX_NMAP, count).

It seems that it has forgotten to trim the mapp array after each
iteration, so change it.

Signed-off-by: Shida Zhang <zhangshida@kylinos.cn>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
libxfs/xfs_da_btree.c