From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5546CCE79A4 for ; Mon, 25 Sep 2023 22:22:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BBEA48D0041; Mon, 25 Sep 2023 18:22:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B6F818D000A; Mon, 25 Sep 2023 18:22:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A36FE8D0041; Mon, 25 Sep 2023 18:22:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 901768D000A for ; Mon, 25 Sep 2023 18:22:53 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 5B5F11CA90D for ; Mon, 25 Sep 2023 22:22:53 +0000 (UTC) X-FDA: 81276545826.27.C47EED7 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf22.hostedemail.com (Postfix) with ESMTP id A54F6C000B for ; Mon, 25 Sep 2023 22:22:51 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=qRqa4eH3; dmarc=none; spf=none (imf22.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1695680571; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=igN5+zK37ol5ClF0Mp4pRyBssbWi6Pl+w3dqFJhRiHw=; b=udFofg0zGBJbiAi4vXdani0gvjn4jLT9a+/JmiTmzidZaKGCrumfI0nkvDXqWiwBUm4dCw XLEEn/+W1orITG+UIyV6LuZk2U+3MsQ/OI4woCIuzaVgxPa/MxMcU2zcyNRnaM/goRuJDa bQRMS6gNYn+jsGkGuEIvpdhexyrkEzw= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=qRqa4eH3; dmarc=none; spf=none (imf22.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1695680571; a=rsa-sha256; cv=none; b=NWbzXRUPYRTkRFsv48WEyABpF5BAo/tZ5EHbhlWSaE9lMec8LYi8nM9X/YhddECChO47E6 bQahTyTdkeWMx+g/i1+9D4NChrGWH7G+I8PeMv2qihRULkp/NyTGpaRCIDT4yjiyiKUhvm quvuF0rCJRdcpCee3TI9rrzFGVz1QUE= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.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; bh=igN5+zK37ol5ClF0Mp4pRyBssbWi6Pl+w3dqFJhRiHw=; b=qRqa4eH3r6DVlOYQBhH0CMCIxQ 03OwsKs7lVSp0WqBKvCeNU/d+D9ZSa2gMf0LvOQ6PKyquIpznVHy4ZU3cmvg7LQiV5VJePGAVl/8K 0N6rjZBsdz6YxRY1WebwWCefITT5jmBEmUFDqKyz5An1QMlsZEGWGRLR3LI5GK8sgl7SDd2rvapl2 p4BZKSE37glpKUG1WXAo6r9eBMt9mfXg5qLqMtnHeruwfnQFusFKQWvS47iyvg9tQ9BFzOV2JuJEQ sowiU/pz8uO145PBBou+Yu6aH7C/6Nw4tH8UR9VQUFwf1Y7+hpdc+RQGnGY/JkKlgVa9/KoD1ouZw Sw6mfEAQ==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1qktyC-0040bK-Op; Mon, 25 Sep 2023 22:22:24 +0000 Date: Mon, 25 Sep 2023 23:22:24 +0100 From: Matthew Wilcox To: Hugh Dickins Cc: Andrew Morton , Andi Kleen , Christoph Lameter , Mike Kravetz , David Hildenbrand , Suren Baghdasaryan , Yang Shi , Sidhartha Kumar , Vishal Moola , Kefeng Wang , Greg Kroah-Hartman , Tejun Heo , Mel Gorman , Michal Hocko , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH 03/12] mempolicy: fix migrate_pages(2) syscall return nr_failed Message-ID: References: <2d872cef-7787-a7ca-10e-9d45a64c80b4@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: A54F6C000B X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: aa5o4r4qruotkh6o51wqbg5cquonj1xe X-HE-Tag: 1695680571-374043 X-HE-Meta: U2FsdGVkX18AyX72RssNY6Me9UJrMLNcGP9yEMznjlxKu7w/sH6vn/GbYJKCVaUHWDhe9mizv6tgENUWNrq7sWKQkKJkpR16n9MNbJa2yIJHKWdc0oS24hwOzKgfYjknNQVGS4bvBItor2LZwBmm5vba7wccYoWW67S1mTIOpN8xHiSX7B60Yb4qVr4aLI+b+dUMR67OolV3Ky8R2xalrPw05XrFFFp0fmJCz9hQOT73QEOD8LgGxYVFyBd0g6UrnKjeAqjBTpA5MkPkyZEU6kpAl6bQYaqjHDn/kxNSsoVFTzyPBZaHhjwiVE5AqtsHMj0BFjIhlRW5OVVz60dsRSt1kxTqlRLhTp8EV6d2w73i+1VJFyUvlGxAoz4vxCI7loSL+7shc2SIcmTwCPKfpU0uY1tcLZL01M4uoP7JgBFFtOhqbf3kMA+o8ri+cDJuRZ/28sm1D/yxTB2/EwoXvgsW1BXG21ENbheaBkWFIr4YS2zAfwWb0q2NF+S/bzsA35P+4P6XoSIi/x+VZ45RWRaqNFjX2tdWUTMjhg1P9AXQRpz+h9JkoUe2kw08lgRCZYPRWySIoB1/YGnvNVMJ8vA4FCaNr+KjYf0UJW40k0b8p99J699GnHCHD7gUx7N3yGWKW/zlS9V6x4rAeYmb1lX2bHZBIfsyqt/hcn0j1cnEPBAAS9Zif7GwkMsaSoRiHpp1YQhwAOYtlnjRVv8Mpu2QNiDu5xr6tyvrFnlZXQHbvWFylgNLh6Fe4CFjb2clSPzC33w7+eF2d+xTkuN+Rk5cgQOPzTZTdszysN3L1/a01AjcZfzOvQphlrOf5ajzJLdFV+ce7YGBjyqeqw7GNnz7Xnq+Zv2aKJYuo64Ogix9CQMNFRBEldI2ETsvqWaVhsLlBrTOOVKoBtlAZWh8YeSO0lQyeopwB3HDDgsd/5j4ZxN7uqUcu5/7scGhvl4oj2AbXgYrRYAFfu0awNi 5qRPAY4K 6Q/NXZwkRdrHvpH+CN7bxZsgdNuug4ybwZUk8pd5z9L6tuYHanqsH/cHnumn5pPmu4fefX0KdcTtTgckrugHIInbiTzQZ5OJP7h0PRa34tJBGVD2sUjBuIythI2ejFRwrne3GF2kJoUqSJo5w14aV1HT0rqAauLox4AfGL6WgNsIqCsSEb9IB0b9uYjmnpigKpxo2LHm3S+wdw42177TuCD+c1y8NNFdM/kIZk4MxmsyzDGi5qsMqGbExY+aYo9B/rOMV5Cm9omrlNVjoIRuBt/8EvB+9fFCgmLRgGBi22BOXwg/bOFN7+D3+IQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Mon, Sep 25, 2023 at 01:24:02AM -0700, Hugh Dickins wrote: > "man 2 migrate_pages" says "On success migrate_pages() returns the number > of pages that could not be moved". Although 5.3 and 5.4 commits fixed > mbind(MPOL_MF_STRICT|MPOL_MF_MOVE*) to fail with EIO when not all pages > could be moved (because some could not be isolated for migration), > migrate_pages(2) was left still reporting only those pages failing at the > migration stage, forgetting those failing at the earlier isolation stage. > > Fix that by accumulating a long nr_failed count in struct queue_pages, > returned by queue_pages_range() when it's not returning an error, for > adding on to the nr_failed count from migrate_pages() in mm/migrate.c. > A count of pages? It's more a count of folios, but changing it to pages > would entail more work (also in mm/migrate.c): does not seem justified. I certainly see what you're saying. If a folio is only partially mapped (in an extreme case, the VMA is PAGE_SIZE and maps one page of a 512-page folio), then setting nr_failed to folio_nr_pages() is misleading at best. > +static void queue_folios_pmd(pmd_t *pmd, spinlock_t *ptl, unsigned long addr, > unsigned long end, struct mm_walk *walk) > - __releases(ptl) > { > - int ret = 0; > struct folio *folio; > struct queue_pages *qp = walk->private; > - unsigned long flags; > > if (unlikely(is_pmd_migration_entry(*pmd))) { > - ret = -EIO; > - goto unlock; > + qp->nr_failed++; > + return; > } > folio = pfn_folio(pmd_pfn(*pmd)); > if (is_huge_zero_page(&folio->page)) { > walk->action = ACTION_CONTINUE; > - goto unlock; > + return; > } > if (!queue_folio_required(folio, qp)) > - goto unlock; > - > - flags = qp->flags; > - /* go to folio migration */ > - if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) { > - if (!vma_migratable(walk->vma) || > - migrate_folio_add(folio, qp->pagelist, flags)) { > - ret = 1; > - goto unlock; > - } > - } else > - ret = -EIO; > -unlock: > - spin_unlock(ptl); > - return ret; > + return; > + if (!(qp->flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) || > + !vma_migratable(walk->vma) || > + !migrate_folio_add(folio, qp->pagelist, qp->flags)) > + qp->nr_failed++; However, I think here, we would do well to increment by HPAGE_PMD_NR. Or whatever equivalent is flavour of the week. Bravo to the other changes. Reviewed-by: Matthew Wilcox (Oracle)