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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5D84AC433F5 for ; Mon, 18 Oct 2021 11:47:35 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id DE03A60EE5 for ; Mon, 18 Oct 2021 11:47:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org DE03A60EE5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id F35C66B0073; Mon, 18 Oct 2021 07:47:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E8E346B0074; Mon, 18 Oct 2021 07:47:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B8522900002; Mon, 18 Oct 2021 07:47:31 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0163.hostedemail.com [216.40.44.163]) by kanga.kvack.org (Postfix) with ESMTP id 8F4686B0072 for ; Mon, 18 Oct 2021 07:47:31 -0400 (EDT) Received: from smtpin33.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 47ADE18397F3A for ; Mon, 18 Oct 2021 11:47:31 +0000 (UTC) X-FDA: 78709383102.33.FC4A917 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) by imf12.hostedemail.com (Postfix) with ESMTP id E89A910000AF for ; Mon, 18 Oct 2021 11:47:30 +0000 (UTC) Received: by mail-ed1-f46.google.com with SMTP id g10so70111049edj.1 for ; Mon, 18 Oct 2021 04:47:30 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4L8lFLAdXhWJMY8TqNwD1OY6QC5E8vHIjyqLADqFDA4=; b=bqqpGZLZNGklQUrnvA7wx2t4Sxp1Yyce64avWYYx48+AzeCWc7wjtmwhRXnlP5pTSt VAh+a6ETFLLK0VZRMTVA66E3/iZK8pfXySdswd8c9y+gTPtlusjfN/u0m0+nEgqkLpCo O4SN3+Trj+Jf7jQd6MbRqlWIdYmaSRmGkM/uc2OjMp+C31n3MFpVdDKrHFazzZvYMZVR noCCazthH7fVPP+n7xV8QDTDHkQRkBoP57mJINteHsLgXe94PeXyEhtKs5vAKLHTRgj0 9Q4esM9rpIKUV2J9LMBTFXAJSr3DoOfzh7kMRJSmMox4XzoD2GM5qOplZV1c9lsfFwwr pr3g== X-Gm-Message-State: AOAM533k/CTNgkk3ihFA2s21dlk0HJkFBQNdVH1iP70t+uoMRlJMnV60 LJ8YVLzMd4Lmtt683y4SNmnfn/Cd684= X-Google-Smtp-Source: ABdhPJyBgibGZUkyEokdtRYfvSvKNqevOAdvgE5oWJNGtKyZ5EwnZkfw2zWnIDru9DVVWBa+3kOs3g== X-Received: by 2002:a17:906:3510:: with SMTP id r16mr30003410eja.209.1634557648625; Mon, 18 Oct 2021 04:47:28 -0700 (PDT) Received: from localhost.localdomain (ip-85-160-35-99.eurotel.cz. [85.160.35.99]) by smtp.gmail.com with ESMTPSA id b2sm9587458edv.73.2021.10.18.04.47.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Oct 2021 04:47:28 -0700 (PDT) From: Michal Hocko To: Cc: Dave Chinner , Neil Brown , Andrew Morton , Christoph Hellwig , Uladzislau Rezki , , LKML , Ilya Dryomov , Jeff Layton , Michal Hocko Subject: [RFC 2/3] mm/vmalloc: add support for __GFP_NOFAIL Date: Mon, 18 Oct 2021 13:47:11 +0200 Message-Id: <20211018114712.9802-3-mhocko@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211018114712.9802-1-mhocko@kernel.org> References: <20211018114712.9802-1-mhocko@kernel.org> MIME-Version: 1.0 Authentication-Results: imf12.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=kernel.org (policy=none); spf=pass (imf12.hostedemail.com: domain of mstsxfx@gmail.com designates 209.85.208.46 as permitted sender) smtp.mailfrom=mstsxfx@gmail.com X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: E89A910000AF X-Stat-Signature: 9eoaricz6146c5qsd87d5bk8h7tcc3qb X-HE-Tag: 1634557650-28554 Content-Transfer-Encoding: quoted-printable 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: From: Michal Hocko Dave Chinner has mentioned that some of the xfs code would benefit from kvmalloc support for __GFP_NOFAIL because they have allocations that cannot fail and they do not fit into a single page. The larg part of the vmalloc implementation already complies with the given gfp flags so there is no work for those to be done. The area and page table allocations are an exception to that. Implement a retry loop for those. Signed-off-by: Michal Hocko --- mm/vmalloc.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 7455c89598d3..3a5a178295d1 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -2941,8 +2941,10 @@ static void *__vmalloc_area_node(struct vm_struct = *area, gfp_t gfp_mask, else if (!(gfp_mask & (__GFP_FS | __GFP_IO))) flags =3D memalloc_noio_save(); =20 - ret =3D vmap_pages_range(addr, addr + size, prot, area->pages, + do { + ret =3D vmap_pages_range(addr, addr + size, prot, area->pages, page_shift); + } while ((gfp_mask & __GFP_NOFAIL) && (ret < 0)); =20 if ((gfp_mask & (__GFP_FS | __GFP_IO)) =3D=3D __GFP_IO) memalloc_nofs_restore(flags); @@ -3032,6 +3034,8 @@ void *__vmalloc_node_range(unsigned long size, unsi= gned long align, warn_alloc(gfp_mask, NULL, "vmalloc error: size %lu, vm_struct allocation failed", real_size); + if (gfp_mask && __GFP_NOFAIL) + goto again; goto fail; } =20 --=20 2.30.2