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