Re: [PATCH] z3fold: remove the unnecessary limit in z3fold_compact_page

2016-10-16 Thread zhong jiang
On 2016/10/15 3:25, Vitaly Wool wrote:
> On Fri, Oct 14, 2016 at 3:35 PM, zhongjiang  wrote:
>> From: zhong jiang 
>>
>> z3fold compact page has nothing with the last_chunks. even if
>> last_chunks is not free, compact page will proceed.
>>
>> The patch just remove the limit without functional change.
>>
>> Signed-off-by: zhong jiang 
>> ---
>>  mm/z3fold.c | 3 +--
>>  1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/mm/z3fold.c b/mm/z3fold.c
>> index e8fc216..4668e1c 100644
>> --- a/mm/z3fold.c
>> +++ b/mm/z3fold.c
>> @@ -258,8 +258,7 @@ static int z3fold_compact_page(struct z3fold_header 
>> *zhdr)
>>
>>
>> if (!test_bit(MIDDLE_CHUNK_MAPPED, &page->private) &&
>> -   zhdr->middle_chunks != 0 &&
>> -   zhdr->first_chunks == 0 && zhdr->last_chunks == 0) {
>> +   zhdr->middle_chunks != 0 && zhdr->first_chunks == 0) {
>> memmove(beg + ZHDR_SIZE_ALIGNED,
>> beg + (zhdr->start_middle << CHUNK_SHIFT),
>> zhdr->middle_chunks << CHUNK_SHIFT);
> This check is actually important because if we move the middle chunk
> to the first and leave the last chunk, handles will become invalid and
> there won't be any easy way to fix that.
>
> Best regards,
>Vitaly
>
> .
>
 Thanks for you reply. you are right. Leave the last chunk to compact will
 lead to the first_num increase. Thus, handle_to_buddy will become invalid.

 Thanks
 zhongjiang
 



Re: [PATCH] z3fold: remove the unnecessary limit in z3fold_compact_page

2016-10-14 Thread Vitaly Wool
On Fri, Oct 14, 2016 at 3:35 PM, zhongjiang  wrote:
> From: zhong jiang 
>
> z3fold compact page has nothing with the last_chunks. even if
> last_chunks is not free, compact page will proceed.
>
> The patch just remove the limit without functional change.
>
> Signed-off-by: zhong jiang 
> ---
>  mm/z3fold.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/mm/z3fold.c b/mm/z3fold.c
> index e8fc216..4668e1c 100644
> --- a/mm/z3fold.c
> +++ b/mm/z3fold.c
> @@ -258,8 +258,7 @@ static int z3fold_compact_page(struct z3fold_header *zhdr)
>
>
> if (!test_bit(MIDDLE_CHUNK_MAPPED, &page->private) &&
> -   zhdr->middle_chunks != 0 &&
> -   zhdr->first_chunks == 0 && zhdr->last_chunks == 0) {
> +   zhdr->middle_chunks != 0 && zhdr->first_chunks == 0) {
> memmove(beg + ZHDR_SIZE_ALIGNED,
> beg + (zhdr->start_middle << CHUNK_SHIFT),
> zhdr->middle_chunks << CHUNK_SHIFT);

This check is actually important because if we move the middle chunk
to the first and leave the last chunk, handles will become invalid and
there won't be any easy way to fix that.

Best regards,
   Vitaly