diff mbox series

xfs: return when delta equals 0 in xfs_mod_freecounter

Message ID 20220621031113.1222877-1-zhangshida@kylinos.cn (mailing list archive)
State Deferred, archived
Headers show
Series xfs: return when delta equals 0 in xfs_mod_freecounter | expand

Commit Message

Stephen Zhang June 21, 2022, 3:11 a.m. UTC
There are cases that xfs_mod_freecounter() will get called when delta
equals 0 while it's unnecessary.

Signed-off-by: Shida Zhang <zhangshida@kylinos.cn>
---
 fs/xfs/xfs_mount.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Dave Chinner June 21, 2022, 4:35 a.m. UTC | #1
On Tue, Jun 21, 2022 at 11:11:13AM +0800, Shida Zhang wrote:
> There are cases that xfs_mod_freecounter() will get called when delta
> equals 0 while it's unnecessary.

AFAICT all of the call paths are guarded by checks to ensure the
delta is, in fact, not zero. i.e. if the delta is zero, we shouldn't
be calling xfs_mod_fdblocks() or xfs_mod_frextents() at all.

Can you explain in more detail what code path leads to delta = 0
here?

Cheers,

Dave.
Stephen Zhang June 21, 2022, 7:04 a.m. UTC | #2
Dave Chinner <david@fromorbit.com> 于2022年6月21日周二 12:35写道:
>
> On Tue, Jun 21, 2022 at 11:11:13AM +0800, Shida Zhang wrote:
> > There are cases that xfs_mod_freecounter() will get called when delta
> > equals 0 while it's unnecessary.
>
> AFAICT all of the call paths are guarded by checks to ensure the
> delta is, in fact, not zero. i.e. if the delta is zero, we shouldn't
> be calling xfs_mod_fdblocks() or xfs_mod_frextents() at all.
>
> Can you explain in more detail what code path leads to delta = 0
> here?
>
> Cheers,
>
> Dave.
> --
> Dave Chinner
> david@fromorbit.com

Yeah. I will give it in another v2 version patch.

Cheers,

Stephen.
diff mbox series

Patch

diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
index daa8d29c46b4..a3db932fd1fc 100644
--- a/fs/xfs/xfs_mount.c
+++ b/fs/xfs/xfs_mount.c
@@ -1129,6 +1129,9 @@  xfs_mod_freecounter(
 	if (rsvd)
 		ASSERT(has_resv_pool);
 
+	if (delta == 0)
+		return 0;
+
 	if (delta > 0) {
 		/*
 		 * If the reserve pool is depleted, put blocks back into it