2011-11-01 02:06:40

by Eryu Guan

[permalink] [raw]
Subject: [PATCH] ext3: call ext3_mark_recovery_complete() when recovery is really needed

Call ext3_mark_recovery_complete() in ext3_fill_super() only if
needs_recovery is non-zero.

Besides that, print out "recovery complete" message after calling
ext3_mark_recovery_complete().

Cc: Jan Kara <[email protected]>
Signed-off-by: Eryu Guan <[email protected]>
---
fs/ext3/super.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index 7beb69a..2681e0d 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -2060,9 +2060,10 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
EXT3_SB(sb)->s_mount_state |= EXT3_ORPHAN_FS;
ext3_orphan_cleanup(sb, es);
EXT3_SB(sb)->s_mount_state &= ~EXT3_ORPHAN_FS;
- if (needs_recovery)
+ if (needs_recovery) {
+ ext3_mark_recovery_complete(sb, es);
ext3_msg(sb, KERN_INFO, "recovery complete");
- ext3_mark_recovery_complete(sb, es);
+ }
ext3_msg(sb, KERN_INFO, "mounted filesystem with %s data mode",
test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_JOURNAL_DATA ? "journal":
test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_ORDERED_DATA ? "ordered":
--
1.7.7.1



2011-11-01 22:43:08

by Jan Kara

[permalink] [raw]
Subject: Re: [PATCH] ext3: call ext3_mark_recovery_complete() when recovery is really needed

On Tue 01-11-11 10:06:19, Eryu Guan wrote:
> Call ext3_mark_recovery_complete() in ext3_fill_super() only if
> needs_recovery is non-zero.
>
> Besides that, print out "recovery complete" message after calling
> ext3_mark_recovery_complete().
OK, I don't see a problem in this patch. But is there some benefit in it?
I'm slightly nervous it could change something subtle...

Honza
>
> Cc: Jan Kara <[email protected]>
> Signed-off-by: Eryu Guan <[email protected]>
> ---
> fs/ext3/super.c | 5 +++--
> 1 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/fs/ext3/super.c b/fs/ext3/super.c
> index 7beb69a..2681e0d 100644
> --- a/fs/ext3/super.c
> +++ b/fs/ext3/super.c
> @@ -2060,9 +2060,10 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
> EXT3_SB(sb)->s_mount_state |= EXT3_ORPHAN_FS;
> ext3_orphan_cleanup(sb, es);
> EXT3_SB(sb)->s_mount_state &= ~EXT3_ORPHAN_FS;
> - if (needs_recovery)
> + if (needs_recovery) {
> + ext3_mark_recovery_complete(sb, es);
> ext3_msg(sb, KERN_INFO, "recovery complete");
> - ext3_mark_recovery_complete(sb, es);
> + }
> ext3_msg(sb, KERN_INFO, "mounted filesystem with %s data mode",
> test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_JOURNAL_DATA ? "journal":
> test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_ORDERED_DATA ? "ordered":
> --
> 1.7.7.1
>
--
Jan Kara <[email protected]>
SUSE Labs, CR

2011-11-02 14:05:15

by Eryu Guan

[permalink] [raw]
Subject: Re: [PATCH] ext3: call ext3_mark_recovery_complete() when recovery is really needed

On Wed, Nov 2, 2011 at 6:43 AM, Jan Kara <[email protected]> wrote:
> On Tue 01-11-11 10:06:19, Eryu Guan wrote:
>> Call ext3_mark_recovery_complete() in ext3_fill_super() only if
>> needs_recovery is non-zero.
>>
>> Besides that, print out "recovery complete" message after calling
>> ext3_mark_recovery_complete().
> ?OK, I don't see a problem in this patch. But is there some benefit in it?
> I'm slightly nervous it could change something subtle...

I think current code may confuse people. The variable 'needs_recovery' in
ext3_fill_super() only be used in this 'if' switch, but all the 'if'
does is printing
out a log message and no matter what value 'needs_recovery' is,
ext3_mark_recovery_complete() is always being called.

This change makes the logic more clear and of course reduce a little overhead
when mounting clean fs.

This change also consists with ext4 counter part
3733 if (needs_recovery) {
3734 ext4_msg(sb, KERN_INFO, "recovery complete");
3735 ext4_mark_recovery_complete(sb, es);
3736 }

But, yes, current code exists for a long time and no one complains about it, the
change is trivial. If people worry more, I'm fine with skipping this patch.

Thanks.
Eryu Guan
>
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Honza
>>
>> Cc: Jan Kara <[email protected]>
>> Signed-off-by: Eryu Guan <[email protected]>
>> ---
>> ?fs/ext3/super.c | ? ?5 +++--
>> ?1 files changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/fs/ext3/super.c b/fs/ext3/super.c
>> index 7beb69a..2681e0d 100644
>> --- a/fs/ext3/super.c
>> +++ b/fs/ext3/super.c
>> @@ -2060,9 +2060,10 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>> ? ? ? EXT3_SB(sb)->s_mount_state |= EXT3_ORPHAN_FS;
>> ? ? ? ext3_orphan_cleanup(sb, es);
>> ? ? ? EXT3_SB(sb)->s_mount_state &= ~EXT3_ORPHAN_FS;
>> - ? ? if (needs_recovery)
>> + ? ? if (needs_recovery) {
>> + ? ? ? ? ? ? ext3_mark_recovery_complete(sb, es);
>> ? ? ? ? ? ? ? ext3_msg(sb, KERN_INFO, "recovery complete");
>> - ? ? ext3_mark_recovery_complete(sb, es);
>> + ? ? }
>> ? ? ? ext3_msg(sb, KERN_INFO, "mounted filesystem with %s data mode",
>> ? ? ? ? ? ? ? test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_JOURNAL_DATA ? "journal":
>> ? ? ? ? ? ? ? test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_ORDERED_DATA ? "ordered":
>> --
>> 1.7.7.1
>>
> --
> Jan Kara <[email protected]>
> SUSE Labs, CR
>

2011-11-03 01:35:53

by Jan Kara

[permalink] [raw]
Subject: Re: [PATCH] ext3: call ext3_mark_recovery_complete() when recovery is really needed

On Wed 02-11-11 22:04:54, Eryu Guan wrote:
> On Wed, Nov 2, 2011 at 6:43 AM, Jan Kara <[email protected]> wrote:
> > On Tue 01-11-11 10:06:19, Eryu Guan wrote:
> >> Call ext3_mark_recovery_complete() in ext3_fill_super() only if
> >> needs_recovery is non-zero.
> >>
> >> Besides that, print out "recovery complete" message after calling
> >> ext3_mark_recovery_complete().
> > ?OK, I don't see a problem in this patch. But is there some benefit in it?
> > I'm slightly nervous it could change something subtle...
>
> I think current code may confuse people. The variable 'needs_recovery' in
> ext3_fill_super() only be used in this 'if' switch, but all the 'if'
> does is printing
> out a log message and no matter what value 'needs_recovery' is,
> ext3_mark_recovery_complete() is always being called.
>
> This change makes the logic more clear and of course reduce a little overhead
> when mounting clean fs.
>
> This change also consists with ext4 counter part
> 3733 if (needs_recovery) {
> 3734 ext4_msg(sb, KERN_INFO, "recovery complete");
> 3735 ext4_mark_recovery_complete(sb, es);
> 3736 }
OK, consistency with ext4 makes sense. I'll take the patch. Thanks.

Honza

> >> Cc: Jan Kara <[email protected]>
> >> Signed-off-by: Eryu Guan <[email protected]>
> >> ---
> >> ?fs/ext3/super.c | ? ?5 +++--
> >> ?1 files changed, 3 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/fs/ext3/super.c b/fs/ext3/super.c
> >> index 7beb69a..2681e0d 100644
> >> --- a/fs/ext3/super.c
> >> +++ b/fs/ext3/super.c
> >> @@ -2060,9 +2060,10 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
> >> ? ? ? EXT3_SB(sb)->s_mount_state |= EXT3_ORPHAN_FS;
> >> ? ? ? ext3_orphan_cleanup(sb, es);
> >> ? ? ? EXT3_SB(sb)->s_mount_state &= ~EXT3_ORPHAN_FS;
> >> - ? ? if (needs_recovery)
> >> + ? ? if (needs_recovery) {
> >> + ? ? ? ? ? ? ext3_mark_recovery_complete(sb, es);
> >> ? ? ? ? ? ? ? ext3_msg(sb, KERN_INFO, "recovery complete");
> >> - ? ? ext3_mark_recovery_complete(sb, es);
> >> + ? ? }
> >> ? ? ? ext3_msg(sb, KERN_INFO, "mounted filesystem with %s data mode",
> >> ? ? ? ? ? ? ? test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_JOURNAL_DATA ? "journal":
> >> ? ? ? ? ? ? ? test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_ORDERED_DATA ? "ordered":
> >> --
> >> 1.7.7.1
> >>
> > --
> > Jan Kara <[email protected]>
> > SUSE Labs, CR
> >
--
Jan Kara <[email protected]>
SUSE Labs, CR