[PATCH chao/erofs-dev 1/2] staging: erofs: separate into init_once / always
Gao Xiang
gaoxiang25 at huawei.com
Wed Oct 31 13:11:17 AEDT 2018
Hi Chao,
On 2018/10/31 10:04, Chao Yu wrote:
> On 2018/10/19 14:41, Gao Xiang wrote:
>> `z_erofs_vle_workgroup' is heavily generated in the decompression,
>> for example, it resets 32 bytes redundantly for 64-bit platforms
>> even through Z_EROFS_VLE_INLINE_PAGEVECS + Z_EROFS_CLUSTER_MAX_PAGES,
>> default 4, pages are stored in `z_erofs_vle_workgroup'.
>>
>> As an another example, `struct mutex' takes 72 bytes for our kirin
>> 64-bit platforms, it's unnecessary to be reseted at first and
>> be initialized each time.
>>
>> Let's avoid filling all `z_erofs_vle_workgroup' with 0 at first
>> since most fields are reinitialized to meaningful values later,
>> and pagevec is no need to initialized at all.
>>
>> Signed-off-by: Gao Xiang <gaoxiang25 at huawei.com>
>> ---
>> drivers/staging/erofs/unzip_vle.c | 34 +++++++++++++++++++++++++++++-----
>> 1 file changed, 29 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/staging/erofs/unzip_vle.c b/drivers/staging/erofs/unzip_vle.c
>> index 79d3ba62b298..7aa26818054a 100644
>> --- a/drivers/staging/erofs/unzip_vle.c
>> +++ b/drivers/staging/erofs/unzip_vle.c
>> @@ -42,12 +42,38 @@ static inline int init_unzip_workqueue(void)
>> return z_erofs_workqueue != NULL ? 0 : -ENOMEM;
>> }
>>
>> +static void init_once(void *ptr)
> How about rename it to init_vle_workgroup() for better readability?
The name convension is borrowed from inode_init_always/inode_init_once of fs/inode.c...
since it is pure static, I don't add the prefix(such as z_erofs_vle_workgroup or etc.. too long...).
p.s. These days I think "vle_" is redundant... It could be renamed at a proper time...
>
>> +{
>> + struct z_erofs_vle_workgroup *grp = ptr;
>> + struct z_erofs_vle_work *const work =
>> + z_erofs_vle_grab_primary_work(grp);
>> + unsigned int i;
>> +
>> + mutex_init(&work->lock);
>> + work->nr_pages = 0;
>> + work->vcnt = 0;
>> + for (i = 0; i < Z_EROFS_CLUSTER_MAX_PAGES; ++i)
>> + grp->compressed_pages[i] = NULL;
>> +}
>> +
>> +static void init_always(struct z_erofs_vle_workgroup *grp)
> Ditto, maybe reset_vle_workgroup().
>
> Otherwise, it looks good to me.
>
> Reviewed-by: Chao Yu <yuchao0 at huawei.com>
Thanks for the review :)
Thanks,
Gao Xiang
>
> Thanks,
>
More information about the Linux-erofs
mailing list