* [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.