2020-08-15 21:33:19

by brookxu.cn

[permalink] [raw]
Subject: [PATCH v3] ext4: fix log printing of ext4_mb_regular_allocator()

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 <[email protected]>
---
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;
}
}
--
1.8.3.1



2020-08-15 21:48:49

by Andreas Dilger

[permalink] [raw]
Subject: Re: [PATCH v3] ext4: fix log printing of ext4_mb_regular_allocator()

On Aug 14, 2020, at 6:10 PM, brookxu <[email protected]> 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 <[email protected]>

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 <[email protected]>

> ---
> 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






Attachments:
signature.asc (890.00 B)
Message signed with OpenPGP

2020-08-16 07:57:43

by Ritesh Harjani

[permalink] [raw]
Subject: Re: [PATCH v3] ext4: fix log printing of ext4_mb_regular_allocator()



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 <[email protected]>

LGTM, please feel free to add:
Reviewed-by: Ritesh Harjani <[email protected]>

> ---
> 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;
> }
> }
>

2020-08-19 03:56:47

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH v3] ext4: fix log printing of ext4_mb_regular_allocator()

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