Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1234260ybz; Fri, 1 May 2020 17:45:49 -0700 (PDT) X-Google-Smtp-Source: APiQypIlc4OVZ8M8BHDhseY7lRwn2fyoFVam8gANez1EulYcPVMa90YzQtmeTDJl9VAdxcWQGEae X-Received: by 2002:a17:906:1ccb:: with SMTP id i11mr5656669ejh.101.1588380348933; Fri, 01 May 2020 17:45:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588380348; cv=none; d=google.com; s=arc-20160816; b=s11CcfGHJCovYnZexaqzuTTPabC83KVcp60LHC9z0KJCqahA0yRoxzOJA5lcqaF/SS m0Vq5EYMzsY2J/FzYeLdhkqBzb1SPreW7YvgGSTU0L1oTn7Tiqch4Y283BiZrXieh+8/ /ZrKNC+FESCT53YPD3y1SH8LBiam5acfAiWhKUtmIGYB0DPvSsGR/jw62KWlu2NX6ki3 sIir8yeVa3RoQHGG1bSGdEH3ggiysRiazQfXBIUoo6pSH20Ar+xliVYvpOBh3cjmT/Ls AqhM10L4yJ8YUsj5fYqjOUS5zGxfUEpahSY747JYVD4XDuO33slmrXDcc2b3wOxyogHn fp+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=wCroxG0qo4d90wbE2ZO3cJm2P6ZeLXZvihIg8REOcgs=; b=0mZVR+DQto6Ite2zs+NSxaN779JqT6XKf5sbFtSMA/skEQSofiw3WqkGkuCnKiKsvx Pb2/MppXfAKnbRZcFf9l1X8UhYEj4Fp9m51tmJrychd5bIrMQhyZ11bM8ErbbSeRj/zq 5n2uDfwSADW7pKT/dTqU9rpM9RrQ9eyQgl9GgNT9NkFpQu6/L7aSYwnEhLn8YgcXzzmd x83wbwRQ0JP0lEm1GbLh07wkkLomq0rUwcIrPums7JrvUvFsHhx876QZnfyOja5Mhkwg H2GspvLnAAyVdeHRF++vUTrpMyJc2q9p6d5WiH7PEqU5Cazl5trntVLfkT2Xh2dWIfZq Mx+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=FFzOdU2u; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v24si2438191edx.606.2020.05.01.17.45.25; Fri, 01 May 2020 17:45:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=FFzOdU2u; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727829AbgEBAmD (ORCPT + 99 others); Fri, 1 May 2020 20:42:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43388 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726787AbgEBAmD (ORCPT ); Fri, 1 May 2020 20:42:03 -0400 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0ED6CC061A0C; Fri, 1 May 2020 17:42:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=In-Reply-To:Content-Transfer-Encoding :Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description; bh=wCroxG0qo4d90wbE2ZO3cJm2P6ZeLXZvihIg8REOcgs=; b=FFzOdU2u101Y4v8/bow0YrVHOq Yq2ZkgZ5WywkZPzpDw1cTKINrvLjkorYmOrrcKeOZkB0S7+ueftGEtP19MgpNU5Ih+5VAXg/CYbfE gnPyWIYBYsjLaeTODQMJ/GXXTCLdLBRmH0o2JhvTrSUhX6tWTpy0WfR30mJzDVy3npb3j5FSXMAmo 3tERt9YP3Yi9VFa8MZde/Y9t7NoErTGSgWjW01+MZp8zzXyrtb7rHKi6iNRChzCaZwQJZbwRO02sN bgbo0ygKrxz7jmavzDTXd4mtAR/OucbITlBB9Hmo9GVpVxFFExZKYzLmPsvi+/zXFC0+fhSBHWeWg PGmGj6mA==; Received: from willy by bombadil.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1jUgEA-0002yp-JR; Sat, 02 May 2020 00:41:58 +0000 Date: Fri, 1 May 2020 17:41:58 -0700 From: Matthew Wilcox To: Guoqing Jiang Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, hch@infradead.org, david@fromorbit.com Subject: Re: [RFC PATCH V2 0/9] Introduce attach/clear_page_private to cleanup code Message-ID: <20200502004158.GD29705@bombadil.infradead.org> References: <20200430214450.10662-1-guoqing.jiang@cloud.ionos.com> <20200501221626.GC29705@bombadil.infradead.org> <889f9f82-64ba-50b3-147b-459303617aeb@cloud.ionos.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <889f9f82-64ba-50b3-147b-459303617aeb@cloud.ionos.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, May 02, 2020 at 12:42:15AM +0200, Guoqing Jiang wrote: > On 5/2/20 12:16 AM, Matthew Wilcox wrote: > > On Thu, Apr 30, 2020 at 11:44:41PM +0200, Guoqing Jiang wrote: > > > include/linux/pagemap.h: introduce attach/clear_page_private > > > md: remove __clear_page_buffers and use attach/clear_page_private > > > btrfs: use attach/clear_page_private > > > fs/buffer.c: use attach/clear_page_private > > > f2fs: use attach/clear_page_private > > > iomap: use attach/clear_page_private > > > ntfs: replace attach_page_buffers with attach_page_private > > > orangefs: use attach/clear_page_private > > > buffer_head.h: remove attach_page_buffers > > I think mm/migrate.c could also use this: > > > > ClearPagePrivate(page); > > set_page_private(newpage, page_private(page)); > > set_page_private(page, 0); > > put_page(page); > > get_page(newpage); > > > > Thanks for checking!? Assume the below change is appropriate. > > diff --git a/mm/migrate.c b/mm/migrate.c > index 7160c1556f79..f214adfb3fa4 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -797,10 +797,7 @@ static int __buffer_migrate_page(struct address_space > *mapping, > ??????? if (rc != MIGRATEPAGE_SUCCESS) > ??????????????? goto unlock_buffers; > > -?????? ClearPagePrivate(page); > -?????? set_page_private(newpage, page_private(page)); > -?????? set_page_private(page, 0); > -?????? put_page(page); > +?????? set_page_private(newpage, detach_page_private(page)); > ??????? get_page(newpage); I think you can do: @@ -797,11 +797,7 @@ static int __buffer_migrate_page(struct address_space *mapping, if (rc != MIGRATEPAGE_SUCCESS) goto unlock_buffers; - ClearPagePrivate(page); - set_page_private(newpage, page_private(page)); - set_page_private(page, 0); - put_page(page); - get_page(newpage); + attach_page_private(newpage, detach_page_private(page)); bh = head; do { @@ -810,8 +806,6 @@ static int __buffer_migrate_page(struct address_space *mapping, } while (bh != head); - SetPagePrivate(newpage); - if (mode != MIGRATE_SYNC_NO_COPY) ... but maybe there's a subtlety to the ordering of the setup of the bh and setting PagePrivate that means what you have there is a better patch. Anybody know?