On 2018/1/4 14:46, Jaegeuk Kim wrote:
> On 01/04, heyunlei wrote:
>>
>>
>>> -----Original Message-----
>>> From: Yuchao (T)
>>> Sent: Thursday, January 04, 2018 11:02 AM
>>> To: heyunlei; [email protected]; [email protected]
>>> Cc: Wangbintian; Jianing (Euler)
>>> Subject: Re: [f2fs-dev][PATCH] f2fs: update inode info to inode page for 
>>> new file
>>>
>>> On 2018/1/3 18:03, Yunlei He wrote:
>>>>                    |
>>>>                    | 1. creat a new file A ,(with dirty inode
>>>>                    |    && dirty inode page && xattr info)
>>>>                    | 2. backgroud wb write back file A inode
>>>>    last checkpoint |    page (without update from inode cache)
>>>>                    | 3. fsync file A, write back inode page of
>>>>                    |    file A with inode cache info
>>>>                    | 4. sudden power off before new checkpoint
>>>>
>>>> In this case, recovery process will try to recover a zero inode
>>>> page. Inline xattr flag of file A will be miss and xattr info
>>>> will be taken as blkaddr index.
>>>>
>>>> Signed-off-by: Yunlei He <[email protected]>
>>>> ---
>>>>  fs/f2fs/dir.c | 2 ++
>>>>  1 file changed, 2 insertions(+)
>>>>
>>>> diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c
>>>> index 724304d..d04dcac 100644
>>>> --- a/fs/f2fs/dir.c
>>>> +++ b/fs/f2fs/dir.c
>>>> @@ -427,6 +427,8 @@ struct page *init_inode_metadata(struct inode *inode, 
>>>> struct inode *dir,
>>>>                    remove_orphan_inode(F2FS_I_SB(dir), inode->i_ino);
>>>>            f2fs_i_links_write(inode, true);
>>>>    }
>>>> +
>>>> +  update_inode(inode, page);
>>>
>>> That would cause memory copy overhead, how about always keeping consistent
>>> in-memory inode meta info with the data in recovering inode block as below:
>>>
>>> recover_inline_xattr()
>>>
>>>     if (ri->i_inline & F2FS_INLINE_XATTR) {
>>>             set_inode_flag(inode, FI_INLINE_XATTR);
>>>     } else {
>>>             clear_inode_flag(inode, FI_INLINE_XATTR);
>>>             goto update_inode;
>>>     }
> 
> Ah I see. That doesn't represent parallel things. :P

Please add, ;)

Reviewed-by: Chao Yu <[email protected]>

Thanks,

> 
>>>
>>> Thanks, 
>>
>> Okay, My f2fs module is not support flexible inline xattr size, this change 
>> is enough
>> for this problem.
> 
> Let me merge this patch with this.
> 
> Thanks,
> 
>>
>> Thanks.
>>
>>>
>>>>    return page;
>>>>
>>>>  put_error:
>>>>
> 
> .
> 


------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to