All of lore.kernel.org
 help / color / mirror / Atom feed
From: He YunLei <heyunlei@huawei.com>
To: Jaegeuk Kim <jaegeuk@kernel.org>
Cc: linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [PATCH] fsck.f2fs: avoid fix ssa in some case
Date: Sat, 30 Jan 2016 09:43:52 +0800	[thread overview]
Message-ID: <56AC1558.80806@huawei.com> (raw)
In-Reply-To: <20160129171207.GA77478@jaegeuk.gateway>

On 2016/1/30 1:12, Jaegeuk Kim wrote:
> Hi Yunlei,
>
> On Thu, Jan 28, 2016 at 04:18:16PM +0800, Yunlei He wrote:
>> In some case, we need confirm node or data blkaddr is ok at first,
>> and then fix the conflict in ssa block. If the node blkaddr happen to
>> locate in data type segment caused by something error, may be we 'd
>> better ignore it, and it's same with data blkaddr.
>>
>> Signed-off-by: Yunlei He <heyunlei@huawei.com>
>> ---
>>   fsck/fsck.c | 34 +++++++++++++++++++++++++---------
>>   1 file changed, 25 insertions(+), 9 deletions(-)
>>
>> diff --git a/fsck/fsck.c b/fsck/fsck.c
>> index e7dd02f..fd82bef 100644
>> --- a/fsck/fsck.c
>> +++ b/fsck/fsck.c
>> @@ -129,6 +129,7 @@ static int is_valid_ssa_node_blk(struct f2fs_sb_info *sbi, u32 nid,
>>   {
>>   	struct f2fs_summary_block *sum_blk;
>>   	struct f2fs_summary *sum_entry;
>> +	struct seg_entry * se;
>>   	u32 segno, offset;
>>   	int need_fix = 0, ret = 0;
>>   	int type;
>> @@ -145,9 +146,16 @@ static int is_valid_ssa_node_blk(struct f2fs_sb_info *sbi, u32 nid,
>>   			ret = -EINVAL;
>>   			goto out;
>>   		}
>> -		FIX_MSG("Summary footer indicates a node segment: 0x%x", segno);
>> -		sum_blk->footer.entry_type = SUM_TYPE_NODE;
>> +
>>   		need_fix = 1;
>> +		se = get_seg_entry(sbi, segno);
>> +		if(se->type >= 3 && se->type <= 5) {
>
> IS_NODESEG(se->type) ?
>
>> +			FIX_MSG("Summary footer indicates a node segment: 0x%x", segno);
>> +			sum_blk->footer.entry_type = SUM_TYPE_NODE;
>> +		} else {
>> +			ret = -EINVAL;
>> +			goto out;
>> +		}
>>   	}
>>
>>   	sum_entry = &(sum_blk->entries[offset]);
>> @@ -235,6 +243,7 @@ static int is_valid_ssa_data_blk(struct f2fs_sb_info *sbi, u32 blk_addr,
>>   {
>>   	struct f2fs_summary_block *sum_blk;
>>   	struct f2fs_summary *sum_entry;
>> +	struct seg_entry * se;
>>   	u32 segno, offset;
>>   	int need_fix = 0, ret = 0;
>>   	int type;
>> @@ -251,9 +260,16 @@ static int is_valid_ssa_data_blk(struct f2fs_sb_info *sbi, u32 blk_addr,
>>   			ret = -EINVAL;
>>   			goto out;
>>   		}
>> -		FIX_MSG("Summary footer indicates a data segment: 0x%x", segno);
>> -		sum_blk->footer.entry_type = SUM_TYPE_DATA;
>> +
>>   		need_fix = 1;
>> +		se = get_seg_entry(sbi, segno);
>> +		if (se->type >=0 && se->type <= 2) {
>
> IS_DATASEG(se->type) ?

yeah, it's good!

Thanks.
>
>> +			FIX_MSG("Summary footer indicates a data segment: 0x%x", segno);
>> +			sum_blk->footer.entry_type = SUM_TYPE_DATA;
>> +		} else {
>> +			ret = -EINVAL;
>> +			goto out;
>> +		}
>>   	}
>>
>>   	sum_entry = &(sum_blk->entries[offset]);
>> @@ -352,11 +368,6 @@ static int sanity_check_nid(struct f2fs_sb_info *sbi, u32 nid,
>>   		return -EINVAL;
>>   	}
>>
>> -	if (is_valid_ssa_node_blk(sbi, nid, ni->blk_addr)) {
>> -		ASSERT_MSG("summary node block is not valid. [0x%x]", nid);
>> -		return -EINVAL;
>> -	}
>> -
>>   	ret = dev_read_block(node_blk, ni->blk_addr);
>>   	ASSERT(ret >= 0);
>>
>> @@ -427,6 +438,11 @@ static int sanity_check_nid(struct f2fs_sb_info *sbi, u32 nid,
>>   		ASSERT_MSG("orphan or xattr nid is duplicated [0x%x]\n",
>>   				nid);
>>
>> +	if (is_valid_ssa_node_blk(sbi, nid, ni->blk_addr)) {
>> +		ASSERT_MSG("summary node block is not valid. [0x%x]", nid);
>> +		return -EINVAL;
>> +	}
>> +
>>   	if (f2fs_test_sit_bitmap(sbi, ni->blk_addr) == 0)
>>   		ASSERT_MSG("SIT bitmap is 0x0. blk_addr[0x%x]",
>>   				ni->blk_addr);
>> --
>> 1.9.1
>>
>>
>> ------------------------------------------------------------------------------
>> Site24x7 APM Insight: Get Deep Visibility into Application Performance
>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> Monitor end-to-end web transactions and take corrective actions now
>> Troubleshoot faster and improve end-user experience. Signup Now!
>> http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
>> _______________________________________________
>> Linux-f2fs-devel mailing list
>> Linux-f2fs-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
>
> .
>


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140

      reply	other threads:[~2016-01-30  1:44 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-28  8:18 [PATCH] fsck.f2fs: avoid fix ssa in some case Yunlei He
2016-01-29 17:12 ` Jaegeuk Kim
2016-01-30  1:43   ` He YunLei [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56AC1558.80806@huawei.com \
    --to=heyunlei@huawei.com \
    --cc=jaegeuk@kernel.org \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.