Received: by 10.192.165.148 with SMTP id m20csp2948468imm; Sun, 22 Apr 2018 20:06:07 -0700 (PDT) X-Google-Smtp-Source: AIpwx49YTWJYEHqverzO2+vzdG9FVuCkJtw3yRiXWep3Vvqay4fDel2KXUXyMkb29zsR+8uYYBvX X-Received: by 2002:a17:902:b595:: with SMTP id a21-v6mr19347636pls.68.1524452767654; Sun, 22 Apr 2018 20:06:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524452767; cv=none; d=google.com; s=arc-20160816; b=JlC9zp8OGSbf0/eynjONRydcBiRHRNFs2sDfYWjpEJHPfUZFVKN58+53FJW8PCfEjR Qkrquu/0RZBMSg2jndPOXX1GMXMiCCQNf7J4bJsnIjZ700gjDKhtwweC4ndVd9x7kIyU jas7nCx/HgxH9FNHzBFZLDxkDGniYfn/F86ahf6utK8nL/eZVvm1PItkUXLsqS/NK3vo QkR8T/gihgymwyGe77JfEXjLpQSPUlZYtAFJRsuL0rv9BeI/dQj0UxN237ckCNEckmxx GQXnEhqoZTOMsoqscEgVUajhMlcVlb/mVO8+GW089r4bGBuX7+SYQLOcG7CeBSvwdHyW tB0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=HtHAHPq4oRnsdvsy99goZc2FkhuTLqmoAupw2M6XJds=; b=PyhhXwn1biNiEzbHidPJXy0d4jX5UUV67NTbaNFTkkSlaegnVCwQiz21hq1TFT5glz pGb0fTchanVAS5vB5zv0PpcG51R2K0uuH7Gx+R9IPta/xkB9UpL1siKIkmuHKYac7Pr/ 3VG4/USnLBKsytWJXhTMftr/4rr94u7OWf0MRrOEA4erR+yTrTbxowls7Kd8kgHe78y8 odNC/Yz+ZMyjYzOxMBVRngw0QwZ78YxZnFb5GHbmkCL8f84d24IwkR+AacTHan4Gky/T oiUmyL8XWkGOCZ2TdorWfgc2CcsHGbyJhpHXc2HJwgtb+jiR15ma+bUXpZgegfru0uWW oAcg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=X1hKJDV3; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r1si10300388pfb.247.2018.04.22.20.05.53; Sun, 22 Apr 2018 20:06:07 -0700 (PDT) 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=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=X1hKJDV3; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754148AbeDWDEN (ORCPT + 99 others); Sun, 22 Apr 2018 23:04:13 -0400 Received: from bombadil.infradead.org ([198.137.202.133]:44524 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754016AbeDWDD4 (ORCPT ); Sun, 22 Apr 2018 23:03:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=In-Reply-To:Content-Type:MIME-Version :References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=HtHAHPq4oRnsdvsy99goZc2FkhuTLqmoAupw2M6XJds=; b=X1hKJDV3TTgf9KHwikpLLwpDf PhtC6OMcom0LmttPjKPtPwvOthO663sRSyZF01s9b7SaHrj6p1mp1kmYZxVgRvlHNHgFRzv3m74wR eUVmbBZ+6TsWq7KNANKEqACKj9HDTvL3EyI6gNv1T+pdV1tEFrleqmmmlBGnBKqbD7s9rivFIOR2z CHh25m0l2GV/2Zod+MLKatxfHv8cN8m03DnXb3TpiXTpSVzmQoT0mCoabuNqVwih9mTLTfGJjT5c9 Es34xWiEBRyJ4M0lo7qlRcfxqkdy0hDkDTWOzRlSk0OHFqsPeG46VXQtrXIL0obZ/6z2rnOLOnkWG gDCqviNgQ==; Received: from willy by bombadil.infradead.org with local (Exim 4.90_1 #2 (Red Hat Linux)) id 1fARld-0005G8-AH; Mon, 23 Apr 2018 03:03:49 +0000 Date: Sun, 22 Apr 2018 20:03:49 -0700 From: Matthew Wilcox To: Naoya Horiguchi Cc: Michal Hocko , "Kirill A. Shutemov" , Zi Yan , "linux-mm@kvack.org" , Andrew Morton , Vlastimil Babka , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH] mm: shmem: enable thp migration (Re: [PATCH v1] mm: consider non-anonymous thp as unmovable page) Message-ID: <20180423030349.GB2308@bombadil.infradead.org> References: <20180403083451.GG5501@dhcp22.suse.cz> <20180403105411.hknofkbn6rzs26oz@node.shutemov.name> <20180405085927.GC6312@dhcp22.suse.cz> <20180405122838.6a6b35psizem4tcy@node.shutemov.name> <20180405124830.GJ6312@dhcp22.suse.cz> <20180405134045.7axuun6d7ufobzj4@node.shutemov.name> <20180405150547.GN6312@dhcp22.suse.cz> <20180405155551.wchleyaf4rxooj6m@node.shutemov.name> <20180405160317.GP6312@dhcp22.suse.cz> <20180406030706.GA2434@hori1.linux.bs1.fc.nec.co.jp> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180406030706.GA2434@hori1.linux.bs1.fc.nec.co.jp> User-Agent: Mutt/1.9.2 (2017-12-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Apr 06, 2018 at 03:07:11AM +0000, Naoya Horiguchi wrote: > Subject: [PATCH] mm: enable thp migration for shmem thp This patch is buggy, but not in a significant way: > @@ -524,13 +524,26 @@ int migrate_page_move_mapping(struct address_space *mapping, > } > > radix_tree_replace_slot(&mapping->i_pages, pslot, newpage); ^^^ this line should have been deleted > + if (PageTransHuge(page)) { > + int i; > + int index = page_index(page); > + > + for (i = 0; i < HPAGE_PMD_NR; i++) { ^^^ or this iteration should start at 1 > + pslot = radix_tree_lookup_slot(&mapping->i_pages, > + index + i); > + radix_tree_replace_slot(&mapping->i_pages, pslot, > + newpage + i); > + } > + } else { > + radix_tree_replace_slot(&mapping->i_pages, pslot, newpage); ^^^ and if the second option, then we don't need this line > + } So either this: - radix_tree_replace_slot(&mapping->i_pages, pslot, newpage); + if (PageTransHuge(page)) { + int i; + int index = page_index(page); + + for (i = 0; i < HPAGE_PMD_NR; i++) { + pslot = radix_tree_lookup_slot(&mapping->i_pages, + index + i); + radix_tree_replace_slot(&mapping->i_pages, pslot, + newpage + i); + } + } else { + radix_tree_replace_slot(&mapping->i_pages, pslot, newpage); + } Or this: radix_tree_replace_slot(&mapping->i_pages, pslot, newpage); + if (PageTransHuge(page)) { + int i; + int index = page_index(page); + + for (i = 1; i < HPAGE_PMD_NR; i++) { + pslot = radix_tree_lookup_slot(&mapping->i_pages, + index + i); + radix_tree_replace_slot(&mapping->i_pages, pslot, + newpage + i); + } + } The second one is shorter and involves fewer lookups ...