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

From: Vitaly Wool
Date: Fri Oct 14 2016 - 15:27:35 EST


On Fri, Oct 14, 2016 at 3:35 PM, zhongjiang <zhongjiang@xxxxxxxxxx> wrote:
> From: zhong jiang <zhongjiang@xxxxxxxxxx>
>
> 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 <zhongjiang@xxxxxxxxxx>
> ---
> 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