All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] fsck.f2fs: try to recover cp_payload from valid cp pack
@ 2018-08-28 13:59 Chao Yu
  2018-08-30  2:10 ` Jaegeuk Kim
  0 siblings, 1 reply; 4+ messages in thread
From: Chao Yu @ 2018-08-28 13:59 UTC (permalink / raw)
  To: jaegeuk; +Cc: linux-f2fs-devel

If sb checksum is not enabled, and cp pack is valid due to no
crc inconsistence, let's try to recover cp_payload based on
cp_pack_start_sum in cp pack.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
---
 fsck/f2fs.h  |  5 +++++
 fsck/mount.c | 10 +++++++---
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/fsck/f2fs.h b/fsck/f2fs.h
index d2164449db15..0d0d5e2cc399 100644
--- a/fsck/f2fs.h
+++ b/fsck/f2fs.h
@@ -259,6 +259,11 @@ static inline unsigned long __bitmap_size(struct f2fs_sb_info *sbi, int flag)
 	return 0;
 }
 
+static inline block_t __cp_payload(struct f2fs_sb_info *sbi)
+{
+	return le32_to_cpu(F2FS_RAW_SUPER(sbi)->cp_payload);
+}
+
 static inline void *__bitmap_ptr(struct f2fs_sb_info *sbi, int flag)
 {
 	struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi);
diff --git a/fsck/mount.c b/fsck/mount.c
index 4f0c3fc0db50..9421f5953cd8 100644
--- a/fsck/mount.c
+++ b/fsck/mount.c
@@ -945,12 +945,16 @@ int sanity_check_ckpt(struct f2fs_sb_info *sbi)
 	}
 
 	cp_pack_start_sum = __start_sum_addr(sbi);
-	cp_payload = get_sb(cp_payload);
+	cp_payload = __cp_payload(sbi);
 	if (cp_pack_start_sum < cp_payload + 1 ||
 		cp_pack_start_sum > blocks_per_seg - 1 -
 			NR_CURSEG_TYPE) {
-		MSG(0, "\tWrong cp_pack_start_sum(%u)\n", cp_pack_start_sum);
-		return 1;
+		MSG(0, "\tWrong cp_pack_start_sum(%u) or cp_payload(%u)\n",
+			cp_pack_start_sum, cp_payload);
+		if ((get_sb(feature) & F2FS_FEATURE_SB_CHKSUM))
+			return 1;
+		set_sb(cp_payload, cp_pack_start_sum - 1);
+		update_superblock(sb, SB_ALL);
 	}
 
 	return 0;
-- 
2.18.0.rc1


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] fsck.f2fs: try to recover cp_payload from valid cp pack
  2018-08-28 13:59 [PATCH] fsck.f2fs: try to recover cp_payload from valid cp pack Chao Yu
@ 2018-08-30  2:10 ` Jaegeuk Kim
  2018-08-30  2:16   ` Junling Zheng
  0 siblings, 1 reply; 4+ messages in thread
From: Jaegeuk Kim @ 2018-08-30  2:10 UTC (permalink / raw)
  To: Chao Yu; +Cc: linux-f2fs-devel

Hi Chao,

Could you please add this into Junling's patch series?
A little bit confusing between patches and reviews on them.

Thanks,

On 08/28, Chao Yu wrote:
> If sb checksum is not enabled, and cp pack is valid due to no
> crc inconsistence, let's try to recover cp_payload based on
> cp_pack_start_sum in cp pack.
> 
> Signed-off-by: Chao Yu <yuchao0@huawei.com>
> ---
>  fsck/f2fs.h  |  5 +++++
>  fsck/mount.c | 10 +++++++---
>  2 files changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/fsck/f2fs.h b/fsck/f2fs.h
> index d2164449db15..0d0d5e2cc399 100644
> --- a/fsck/f2fs.h
> +++ b/fsck/f2fs.h
> @@ -259,6 +259,11 @@ static inline unsigned long __bitmap_size(struct f2fs_sb_info *sbi, int flag)
>  	return 0;
>  }
>  
> +static inline block_t __cp_payload(struct f2fs_sb_info *sbi)
> +{
> +	return le32_to_cpu(F2FS_RAW_SUPER(sbi)->cp_payload);
> +}
> +
>  static inline void *__bitmap_ptr(struct f2fs_sb_info *sbi, int flag)
>  {
>  	struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi);
> diff --git a/fsck/mount.c b/fsck/mount.c
> index 4f0c3fc0db50..9421f5953cd8 100644
> --- a/fsck/mount.c
> +++ b/fsck/mount.c
> @@ -945,12 +945,16 @@ int sanity_check_ckpt(struct f2fs_sb_info *sbi)
>  	}
>  
>  	cp_pack_start_sum = __start_sum_addr(sbi);
> -	cp_payload = get_sb(cp_payload);
> +	cp_payload = __cp_payload(sbi);
>  	if (cp_pack_start_sum < cp_payload + 1 ||
>  		cp_pack_start_sum > blocks_per_seg - 1 -
>  			NR_CURSEG_TYPE) {
> -		MSG(0, "\tWrong cp_pack_start_sum(%u)\n", cp_pack_start_sum);
> -		return 1;
> +		MSG(0, "\tWrong cp_pack_start_sum(%u) or cp_payload(%u)\n",
> +			cp_pack_start_sum, cp_payload);
> +		if ((get_sb(feature) & F2FS_FEATURE_SB_CHKSUM))
> +			return 1;
> +		set_sb(cp_payload, cp_pack_start_sum - 1);
> +		update_superblock(sb, SB_ALL);
>  	}
>  
>  	return 0;
> -- 
> 2.18.0.rc1

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] fsck.f2fs: try to recover cp_payload from valid cp pack
  2018-08-30  2:10 ` Jaegeuk Kim
@ 2018-08-30  2:16   ` Junling Zheng
  2018-08-30  2:18     ` Jaegeuk Kim
  0 siblings, 1 reply; 4+ messages in thread
From: Junling Zheng @ 2018-08-30  2:16 UTC (permalink / raw)
  To: Jaegeuk Kim, Chao Yu; +Cc: linux-f2fs-devel

Hi, Jaegeuk

On 2018/8/30 10:10, Jaegeuk Kim wrote:
> Hi Chao,
> 
> Could you please add this into Junling's patch series?
> A little bit confusing between patches and reviews on them.
> 

I'll send an new version patch series with this patch as soon as possible :)

> Thanks,
> 
> On 08/28, Chao Yu wrote:
>> If sb checksum is not enabled, and cp pack is valid due to no
>> crc inconsistence, let's try to recover cp_payload based on
>> cp_pack_start_sum in cp pack.
>>
>> Signed-off-by: Chao Yu <yuchao0@huawei.com>
>> ---
>>  fsck/f2fs.h  |  5 +++++
>>  fsck/mount.c | 10 +++++++---
>>  2 files changed, 12 insertions(+), 3 deletions(-)
>>
>> diff --git a/fsck/f2fs.h b/fsck/f2fs.h
>> index d2164449db15..0d0d5e2cc399 100644
>> --- a/fsck/f2fs.h
>> +++ b/fsck/f2fs.h
>> @@ -259,6 +259,11 @@ static inline unsigned long __bitmap_size(struct f2fs_sb_info *sbi, int flag)
>>  	return 0;
>>  }
>>  
>> +static inline block_t __cp_payload(struct f2fs_sb_info *sbi)
>> +{
>> +	return le32_to_cpu(F2FS_RAW_SUPER(sbi)->cp_payload);
>> +}
>> +
>>  static inline void *__bitmap_ptr(struct f2fs_sb_info *sbi, int flag)
>>  {
>>  	struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi);
>> diff --git a/fsck/mount.c b/fsck/mount.c
>> index 4f0c3fc0db50..9421f5953cd8 100644
>> --- a/fsck/mount.c
>> +++ b/fsck/mount.c
>> @@ -945,12 +945,16 @@ int sanity_check_ckpt(struct f2fs_sb_info *sbi)
>>  	}
>>  
>>  	cp_pack_start_sum = __start_sum_addr(sbi);
>> -	cp_payload = get_sb(cp_payload);
>> +	cp_payload = __cp_payload(sbi);
>>  	if (cp_pack_start_sum < cp_payload + 1 ||
>>  		cp_pack_start_sum > blocks_per_seg - 1 -
>>  			NR_CURSEG_TYPE) {
>> -		MSG(0, "\tWrong cp_pack_start_sum(%u)\n", cp_pack_start_sum);
>> -		return 1;
>> +		MSG(0, "\tWrong cp_pack_start_sum(%u) or cp_payload(%u)\n",
>> +			cp_pack_start_sum, cp_payload);
>> +		if ((get_sb(feature) & F2FS_FEATURE_SB_CHKSUM))
>> +			return 1;
>> +		set_sb(cp_payload, cp_pack_start_sum - 1);
>> +		update_superblock(sb, SB_ALL);
>>  	}
>>  
>>  	return 0;
>> -- 
>> 2.18.0.rc1
> 
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Linux-f2fs-devel mailing list
> Linux-f2fs-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
> 
> 



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] fsck.f2fs: try to recover cp_payload from valid cp pack
  2018-08-30  2:16   ` Junling Zheng
@ 2018-08-30  2:18     ` Jaegeuk Kim
  0 siblings, 0 replies; 4+ messages in thread
From: Jaegeuk Kim @ 2018-08-30  2:18 UTC (permalink / raw)
  To: Junling Zheng; +Cc: linux-f2fs-devel

On 08/30, Junling Zheng wrote:
> Hi, Jaegeuk
> 
> On 2018/8/30 10:10, Jaegeuk Kim wrote:
> > Hi Chao,
> > 
> > Could you please add this into Junling's patch series?
> > A little bit confusing between patches and reviews on them.
> > 
> 
> I'll send an new version patch series with this patch as soon as possible :)

Cool! Thank you. :)

> 
> > Thanks,
> > 
> > On 08/28, Chao Yu wrote:
> >> If sb checksum is not enabled, and cp pack is valid due to no
> >> crc inconsistence, let's try to recover cp_payload based on
> >> cp_pack_start_sum in cp pack.
> >>
> >> Signed-off-by: Chao Yu <yuchao0@huawei.com>
> >> ---
> >>  fsck/f2fs.h  |  5 +++++
> >>  fsck/mount.c | 10 +++++++---
> >>  2 files changed, 12 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/fsck/f2fs.h b/fsck/f2fs.h
> >> index d2164449db15..0d0d5e2cc399 100644
> >> --- a/fsck/f2fs.h
> >> +++ b/fsck/f2fs.h
> >> @@ -259,6 +259,11 @@ static inline unsigned long __bitmap_size(struct f2fs_sb_info *sbi, int flag)
> >>  	return 0;
> >>  }
> >>  
> >> +static inline block_t __cp_payload(struct f2fs_sb_info *sbi)
> >> +{
> >> +	return le32_to_cpu(F2FS_RAW_SUPER(sbi)->cp_payload);
> >> +}
> >> +
> >>  static inline void *__bitmap_ptr(struct f2fs_sb_info *sbi, int flag)
> >>  {
> >>  	struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi);
> >> diff --git a/fsck/mount.c b/fsck/mount.c
> >> index 4f0c3fc0db50..9421f5953cd8 100644
> >> --- a/fsck/mount.c
> >> +++ b/fsck/mount.c
> >> @@ -945,12 +945,16 @@ int sanity_check_ckpt(struct f2fs_sb_info *sbi)
> >>  	}
> >>  
> >>  	cp_pack_start_sum = __start_sum_addr(sbi);
> >> -	cp_payload = get_sb(cp_payload);
> >> +	cp_payload = __cp_payload(sbi);
> >>  	if (cp_pack_start_sum < cp_payload + 1 ||
> >>  		cp_pack_start_sum > blocks_per_seg - 1 -
> >>  			NR_CURSEG_TYPE) {
> >> -		MSG(0, "\tWrong cp_pack_start_sum(%u)\n", cp_pack_start_sum);
> >> -		return 1;
> >> +		MSG(0, "\tWrong cp_pack_start_sum(%u) or cp_payload(%u)\n",
> >> +			cp_pack_start_sum, cp_payload);
> >> +		if ((get_sb(feature) & F2FS_FEATURE_SB_CHKSUM))
> >> +			return 1;
> >> +		set_sb(cp_payload, cp_pack_start_sum - 1);
> >> +		update_superblock(sb, SB_ALL);
> >>  	}
> >>  
> >>  	return 0;
> >> -- 
> >> 2.18.0.rc1
> > 
> > ------------------------------------------------------------------------------
> > Check out the vibrant tech community on one of the world's most
> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > _______________________________________________
> > Linux-f2fs-devel mailing list
> > Linux-f2fs-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
> > 
> > 
> 

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-08-30  2:18 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-28 13:59 [PATCH] fsck.f2fs: try to recover cp_payload from valid cp pack Chao Yu
2018-08-30  2:10 ` Jaegeuk Kim
2018-08-30  2:16   ` Junling Zheng
2018-08-30  2:18     ` Jaegeuk Kim

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.