diff mbox series

[v3] ext4: fix log printing of ext4_mb_regular_allocator()

Message ID 0a165ac0-1912-aebd-8a0d-b42e7cd1aea1@gmail.com
State Awaiting Upstream
Headers show
Series [v3] ext4: fix log printing of ext4_mb_regular_allocator() | expand

Commit Message

brookxu Aug. 15, 2020, 12:10 a.m. UTC
Fix log printing of ext4_mb_regular_allocator(),it may be an
unintentional behavior.

V3:
It may be better to add a comma between start and len, which is
convenient for script processing.

V2:
Add more valuable information, such as group, start, len, lost.

Signed-off-by: Chunguang Xu <brookxu@tencent.com>
---
 fs/ext4/mballoc.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Comments

Andreas Dilger Aug. 15, 2020, 9:47 p.m. UTC | #1
On Aug 14, 2020, at 6:10 PM, brookxu <brookxu.cn@gmail.com> wrote:
> 
> Fix log printing of ext4_mb_regular_allocator(),it may be an
> unintentional behavior.
> 
> V3:
> It may be better to add a comma between start and len, which is
> convenient for script processing.
> 
> V2:
> Add more valuable information, such as group, start, len, lost.
> 
> Signed-off-by: Chunguang Xu <brookxu@tencent.com>

A very minor cleanup possible, but not really worthwhile to resubmit if
Ted wants to apply it.  Either way, it looks good.

Reviewed-by: Andreas Dilger <adilger@dilger.ca>

> ---
> fs/ext4/mballoc.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
> index c0a331e..70b110f 100644
> --- a/fs/ext4/mballoc.c
> +++ b/fs/ext4/mballoc.c
> @@ -2218,6 +2218,7 @@ static int ext4_mb_good_group_nolock(struct ext4_allocation_context *ac,
> 	struct ext4_sb_info *sbi;
> 	struct super_block *sb;
> 	struct ext4_buddy e4b;
> +	unsigned int lost;
> 
> 	sb = ac->ac_sb;
> 	sbi = EXT4_SB(sb);
> @@ -2341,22 +2342,24 @@ static int ext4_mb_good_group_nolock(struct ext4_allocation_context *ac,
> 		 * We've been searching too long. Let's try to allocate
> 		 * the best chunk we've found so far
> 		 */
> -
> 		ext4_mb_try_best_found(ac, &e4b);
> 		if (ac->ac_status != AC_STATUS_FOUND) {
> 			/*
> 			 * Someone more lucky has already allocated it.
> 			 * The only thing we can do is just take first
> 			 * found block(s)
> -			printk(KERN_DEBUG "EXT4-fs: someone won our chunk\n");
> 			 */
> +			lost = (unsigned int)atomic_inc_return(&sbi->s_mb_lost_chunks);

(minor) no need for a typecast here?  The return type is already "int", so it
would be better to declare "int lost" and that would make the line a bit shorter.

> +			mb_debug(sb, "lost chunk, group: %u, start: %d, len: %d, lost: %u\n",
> +				 ac->ac_b_ex.fe_group, ac->ac_b_ex.fe_start,
> +				 ac->ac_b_ex.fe_len, lost);
> +
> 			ac->ac_b_ex.fe_group = 0;
> 			ac->ac_b_ex.fe_start = 0;
> 			ac->ac_b_ex.fe_len = 0;
> 			ac->ac_status = AC_STATUS_CONTINUE;
> 			ac->ac_flags |= EXT4_MB_HINT_FIRST;
> 			cr = 3;
> -			atomic_inc(&sbi->s_mb_lost_chunks);
> 			goto repeat;
> 		}
> 	}
> --
> 1.8.3.1
> 
> 


Cheers, Andreas
Ritesh Harjani Aug. 16, 2020, 5:25 a.m. UTC | #2
On 8/15/20 5:40 AM, brookxu wrote:
> Fix log printing of ext4_mb_regular_allocator(),it may be an
> unintentional behavior.
> 
> V3:
> It may be better to add a comma between start and len, which is
> convenient for script processing.
> 
> V2:
> Add more valuable information, such as group, start, len, lost.
> 
> Signed-off-by: Chunguang Xu <brookxu@tencent.com>

LGTM, please feel free to add:
Reviewed-by: Ritesh Harjani <riteshh@linux.ibm.com>

> ---
>   fs/ext4/mballoc.c | 9 ++++++---
>   1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
> index c0a331e..70b110f 100644
> --- a/fs/ext4/mballoc.c
> +++ b/fs/ext4/mballoc.c
> @@ -2218,6 +2218,7 @@ static int ext4_mb_good_group_nolock(struct ext4_allocation_context *ac,
>   	struct ext4_sb_info *sbi;
>   	struct super_block *sb;
>   	struct ext4_buddy e4b;
> +	unsigned int lost;
>   
>   	sb = ac->ac_sb;
>   	sbi = EXT4_SB(sb);
> @@ -2341,22 +2342,24 @@ static int ext4_mb_good_group_nolock(struct ext4_allocation_context *ac,
>   		 * We've been searching too long. Let's try to allocate
>   		 * the best chunk we've found so far
>   		 */
> -
>   		ext4_mb_try_best_found(ac, &e4b);
>   		if (ac->ac_status != AC_STATUS_FOUND) {
>   			/*
>   			 * Someone more lucky has already allocated it.
>   			 * The only thing we can do is just take first
>   			 * found block(s)
> -			printk(KERN_DEBUG "EXT4-fs: someone won our chunk\n");
>   			 */
> +			lost = (unsigned int)atomic_inc_return(&sbi->s_mb_lost_chunks);
> +			mb_debug(sb, "lost chunk, group: %u, start: %d, len: %d, lost: %u\n",
> +				 ac->ac_b_ex.fe_group, ac->ac_b_ex.fe_start,
> +				 ac->ac_b_ex.fe_len, lost);
> +
>   			ac->ac_b_ex.fe_group = 0;
>   			ac->ac_b_ex.fe_start = 0;
>   			ac->ac_b_ex.fe_len = 0;
>   			ac->ac_status = AC_STATUS_CONTINUE;
>   			ac->ac_flags |= EXT4_MB_HINT_FIRST;
>   			cr = 3;
> -			atomic_inc(&sbi->s_mb_lost_chunks);
>   			goto repeat;
>   		}
>   	}
>
Theodore Ts'o Aug. 19, 2020, 3:49 a.m. UTC | #3
On Sat, Aug 15, 2020 at 08:10:44AM +0800, brookxu wrote:
> Fix log printing of ext4_mb_regular_allocator(),it may be an
> unintentional behavior.

Thanks, applied with Andreas's suggested improvement and with a
reworded commit description.

					- Ted
diff mbox series

Patch

diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index c0a331e..70b110f 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -2218,6 +2218,7 @@  static int ext4_mb_good_group_nolock(struct ext4_allocation_context *ac,
 	struct ext4_sb_info *sbi;
 	struct super_block *sb;
 	struct ext4_buddy e4b;
+	unsigned int lost;
 
 	sb = ac->ac_sb;
 	sbi = EXT4_SB(sb);
@@ -2341,22 +2342,24 @@  static int ext4_mb_good_group_nolock(struct ext4_allocation_context *ac,
 		 * We've been searching too long. Let's try to allocate
 		 * the best chunk we've found so far
 		 */
-
 		ext4_mb_try_best_found(ac, &e4b);
 		if (ac->ac_status != AC_STATUS_FOUND) {
 			/*
 			 * Someone more lucky has already allocated it.
 			 * The only thing we can do is just take first
 			 * found block(s)
-			printk(KERN_DEBUG "EXT4-fs: someone won our chunk\n");
 			 */
+			lost = (unsigned int)atomic_inc_return(&sbi->s_mb_lost_chunks);
+			mb_debug(sb, "lost chunk, group: %u, start: %d, len: %d, lost: %u\n",
+				 ac->ac_b_ex.fe_group, ac->ac_b_ex.fe_start,
+				 ac->ac_b_ex.fe_len, lost);
+
 			ac->ac_b_ex.fe_group = 0;
 			ac->ac_b_ex.fe_start = 0;
 			ac->ac_b_ex.fe_len = 0;
 			ac->ac_status = AC_STATUS_CONTINUE;
 			ac->ac_flags |= EXT4_MB_HINT_FIRST;
 			cr = 3;
-			atomic_inc(&sbi->s_mb_lost_chunks);
 			goto repeat;
 		}
 	}