On 2022/3/7 18:40, Chao Yu wrote:
> On 2022/3/7 16:12, Jia Yang via Linux-f2fs-devel wrote:
>> F2FS_FITS_IN_INODE only cares the type of f2fs inode, so there
>> is no need to read node page of f2fs inode.
>>
>> Signed-off-by: Jia Yang <[email protected]>
>> ---
>>   fs/f2fs/file.c | 10 ++--------
>>   1 file changed, 2 insertions(+), 8 deletions(-)
>>
>> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
>> index cfdc41f87f5d..4b93fbec2ec0 100644
>> --- a/fs/f2fs/file.c
>> +++ b/fs/f2fs/file.c
>> @@ -2999,7 +2999,7 @@ static int f2fs_ioc_setproject(struct inode *inode, 
>> __u32 projid)
>>   {
>>       struct f2fs_inode_info *fi = F2FS_I(inode);
>>       struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
>> -    struct page *ipage;
>> +    struct f2fs_inode *ri;
> 
> struct f2fs_inode *ri = NULL;
> 
> (offsetof(typeof(*(f2fs_inode)), field) +
> sizeof((f2fs_inode)->field)
> 
> A little bit worry about using a NULL pointer here, due to not sure the 
> result of
> offsetof() and sizeof() will always be calculated at compiling time for all 
> kind of
> compilers, can we guarantee that?

We can't guarantee that, but I see that f2fs_getattr also runs in this way. Do 
you think that allocating memory for
f2fs inode is available?

Thanks.

> 
>>       kprojid_t kprojid;
>>       int err;
>>   @@ -3023,17 +3023,11 @@ static int f2fs_ioc_setproject(struct inode 
>> *inode, __u32 projid)
>>       if (IS_NOQUOTA(inode))
>>           return err;
>>   -    ipage = f2fs_get_node_page(sbi, inode->i_ino);
>> -    if (IS_ERR(ipage))
>> -        return PTR_ERR(ipage);
>>   -    if (!F2FS_FITS_IN_INODE(F2FS_INODE(ipage), fi->i_extra_isize,
>> -                                i_projid)) {
>> +    if (!F2FS_FITS_IN_INODE(ri, fi->i_extra_isize, i_projid)) {
>>           err = -EOVERFLOW;
>> -        f2fs_put_page(ipage, 1);
>>           return err;
> 
> return -EOVERFLOW;
> 
> Thanks,
> 
>>       }
>> -    f2fs_put_page(ipage, 1);
>>         err = f2fs_dquot_initialize(inode);
>>       if (err)
> .


_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to