Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1545416imu; Mon, 5 Nov 2018 23:49:31 -0800 (PST) X-Google-Smtp-Source: AJdET5em7LzFCSm23l+xQUSgZWXdRzqcUngSyC6dqZnuRsZZNyP1ErthTA2C68tyi8uLyBoOt1SL X-Received: by 2002:a63:6205:: with SMTP id w5mr22632701pgb.53.1541490571794; Mon, 05 Nov 2018 23:49:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541490571; cv=none; d=google.com; s=arc-20160816; b=qG+bCS550RE5DtA0pgloyoprDb3x+cqsQlkSbKxRoX4zohdqci9oHYzchgHEepjN1N U8Nqoi87RgKHDoIJ2U14+kPCs0wypa0JMqhkBatx8O8aS5DX8mUtJPqqegypKOLV9sBM Luulk50SFEMITHglBHUe5md7dpcXaBcnidsM1t7VIk81qY2rIfmDTMJcUKxdpyT9p+hv nXLkANGk083ek8AHfjynOyc+1DltKASY/WDlEWwM6kVH/FV2ZO3lx0IXaHvmzhFDroeP RE/jvqf2jMlij2d+2dr/xoMTJGXb4zUeJyq9Y7Va97p4HdoVQgKNDiNtkWqxskpH8iNz Oduw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=RtOpj3MTJGeL9R8C8HB/rmGu74uiY687ebEOUaPjfHw=; b=GAL2lkZCipH+wBGPYFPY5joDVluZqp0i8/gknNG8y/BdQvJoBiXGzNdhFNWX7Nyjgq 3zuyt97WkC8ngC2APQdgakHrH5jSIzLv6Sz9HX+ULqwraighLK4Ls2pYj3MFlSYtj6k/ mu322IHLV+R0A5AO5xmXAm3wYnTIrQlf5juRE+6/oQ5HxeyNDl1b1JVwPpVCSyVQ2x3W HgYWdk30pSkKKR18U0TYAf3C5u0r4ZCIusZrxyG6rHY6QtAoIUeQ7uFttiF6+hxMcNkF xn3DLWkvSw3LOJxu52qBdu4GPHSL85j2mLcWYRQ3q3RBKCgKArO7QbBGJdfGoZyzDqNH juzg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=RbKqi+cT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id bj11-v6si16385929plb.55.2018.11.05.23.49.16; Mon, 05 Nov 2018 23:49:31 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=RbKqi+cT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387428AbeKFRMt (ORCPT + 99 others); Tue, 6 Nov 2018 12:12:49 -0500 Received: from mail-lf1-f68.google.com ([209.85.167.68]:37563 "EHLO mail-lf1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729160AbeKFRMt (ORCPT ); Tue, 6 Nov 2018 12:12:49 -0500 Received: by mail-lf1-f68.google.com with SMTP id p17so8096958lfh.4 for ; Mon, 05 Nov 2018 23:48:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=RtOpj3MTJGeL9R8C8HB/rmGu74uiY687ebEOUaPjfHw=; b=RbKqi+cTWkOE7LA1yhlK2vikXPMsptjf9XxQQt4o4Hsdbr2yMelhgLcE/v2H/NODLg eW+4Ijfixna26QTDZrLJTVyOb44dLrEj7180YAdl8TXJM1jubQ+4QDVkJVZsSuVBuUGA rBPwI1AbwQpGPfH9cxZpNZdprypb+aq1+N6/x42DlMHUO5PQumskcqrT+sK4jBcQQVti AmzwtUBQcznYzXeey8ehplUl7RXblT2t75XfYJBpMPPfjxncBRdu/MKEbKc1iVBDIGQF 8D0K390/PXSNofV+WRxwho0MLZBTBDchac9Y/CxvOke4G8J1SAFUAOePi6P3T2sHWzk6 HHFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=RtOpj3MTJGeL9R8C8HB/rmGu74uiY687ebEOUaPjfHw=; b=JBEnjjjm6CE9klf4Mhb8CIqP5RRIMNSEC7Ecqp/LV4vfOyH5DVzv+OYe44mkS/cN14 MTK+BUbOygtrAfumVyOJeufx698ZR8Rv3+PNxJVLKQYY2T07zsM90HVwdHAFzoCX/amu JqsTyiPLlXP59+2QRy+nQCRGqblNmEgFIYjDB0eVwkyyBeSdS1S2syvg2H20/JCKAsrM /VUcPThectXDAdfq4pCkHKv+05O2M6R2FYSZ2z7/XLmmpA+c7u/dJwhusWm5WzJ6LU4F +kKolESDa2oNJ1Ya4Fj4iPVyX4iOZ3Dafa76S3I9AFckgPTfMbrVdeexI5oQEq0f/C5A ziEg== X-Gm-Message-State: AGRZ1gJOYjX3DCqXx5tdSJzC7GXSZa2TDWLeg9og/TWOhkPBviejCn3K 2+jDyOXJFILJ1ngQ9oAseRoNNyxIViuxvJQAmlXqEWFURIc= X-Received: by 2002:a19:9fcd:: with SMTP id i196mr14483248lfe.82.1541490531146; Mon, 05 Nov 2018 23:48:51 -0800 (PST) MIME-Version: 1.0 References: <1530853846-30215-1-git-send-email-ks77sj@gmail.com> In-Reply-To: <1530853846-30215-1-git-send-email-ks77sj@gmail.com> From: Vitaly Wool Date: Tue, 6 Nov 2018 08:48:39 +0100 Message-ID: Subject: Re: [PATCH] z3fold: fix wrong handling of headless pages To: =?UTF-8?B?6rmA7KKF7ISd?= Cc: Andrew Morton , Linux-MM , LKML Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jongseok, Den fre 6 juli 2018 kl 07:11 skrev Jongseok Kim : > > During the processing of headless pages in z3fold_reclaim_page(), > there was a problem that the zhdr pointed to another page > or a page was already released in z3fold_free(). So, the wrong page > is encoded in headless, or test_bit does not work properly > in z3fold_reclaim_page(). This patch fixed these problems. thank you for your work, we've now got a more comprehensive solution: https://lkml.org/lkml/2018/11/5/726 Would you please confirm that it works for you? Also, would you be okay with dropping your patch in favor of the new one? ~Vitaly > Signed-off-by: Jongseok Kim > --- > mm/z3fold.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/mm/z3fold.c b/mm/z3fold.c > index 4b366d1..201a8ac 100644 > --- a/mm/z3fold.c > +++ b/mm/z3fold.c > @@ -746,6 +746,9 @@ static void z3fold_free(struct z3fold_pool *pool, unsigned long handle) > } > > if (bud == HEADLESS) { > + if (test_bit(UNDER_RECLAIM, &page->private)) > + return; > + > spin_lock(&pool->lock); > list_del(&page->lru); > spin_unlock(&pool->lock); > @@ -836,20 +839,20 @@ static int z3fold_reclaim_page(struct z3fold_pool *pool, unsigned int retries) > } > list_for_each_prev(pos, &pool->lru) { > page = list_entry(pos, struct page, lru); > + zhdr = page_address(page); > if (test_bit(PAGE_HEADLESS, &page->private)) > /* candidate found */ > break; > > - zhdr = page_address(page); > if (!z3fold_page_trylock(zhdr)) > continue; /* can't evict at this point */ > kref_get(&zhdr->refcount); > list_del_init(&zhdr->buddy); > zhdr->cpu = -1; > - set_bit(UNDER_RECLAIM, &page->private); > break; > } > > + set_bit(UNDER_RECLAIM, &page->private); > list_del_init(&page->lru); > spin_unlock(&pool->lock); > > @@ -898,6 +901,7 @@ static int z3fold_reclaim_page(struct z3fold_pool *pool, unsigned int retries) > if (test_bit(PAGE_HEADLESS, &page->private)) { > if (ret == 0) { > free_z3fold_page(page); > + atomic64_dec(&pool->pages_nr); > return 0; > } > spin_lock(&pool->lock); > -- > 2.7.4 >