From patchwork Wed May 27 20:50:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Uladzislau Rezki X-Patchwork-Id: 11573947 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 69E14912 for ; Wed, 27 May 2020 20:51:06 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 29F992089D for ; Wed, 27 May 2020 20:51:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="oMrUJZwK" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 29F992089D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 52FD48001A; Wed, 27 May 2020 16:51:05 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 4E26780010; Wed, 27 May 2020 16:51:05 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3CD8D8001A; Wed, 27 May 2020 16:51:05 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0106.hostedemail.com [216.40.44.106]) by kanga.kvack.org (Postfix) with ESMTP id 2110580010 for ; Wed, 27 May 2020 16:51:05 -0400 (EDT) Received: from smtpin29.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id D474D824556B for ; Wed, 27 May 2020 20:51:04 +0000 (UTC) X-FDA: 76863693648.29.drop44_60ad88a43780b Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin29.hostedemail.com (Postfix) with ESMTP id B5200180868F0 for ; Wed, 27 May 2020 20:51:04 +0000 (UTC) X-Spam-Summary: 2,0,0,6d4cc8282e1723e1,d41d8cd98f00b204,urezki@gmail.com,,RULES_HIT:41:69:355:379:541:800:960:966:973:988:989:1260:1311:1314:1345:1437:1515:1535:1542:1711:1730:1747:1777:1792:2196:2198:2199:2200:2393:2559:2562:2895:2902:3138:3139:3140:3141:3142:3353:3865:3866:3867:3868:3870:3871:3872:4250:4321:4385:5007:6261:6653:7514:7903:9010:9413:9592:10004:11026:11658:11914:12043:12114:12296:12297:12438:12517:12519:12555:12895:13161:13229:13894:14096:14181:14394:14687:14721:21080:21444:21451:21627:21666:21939:21990:30054:30070,0,RBL:209.85.208.193:@gmail.com:.lbl8.mailshell.net-62.18.0.100 66.100.201.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fp,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:23,LUA_SUMMARY:none X-HE-Tag: drop44_60ad88a43780b X-Filterd-Recvd-Size: 5196 Received: from mail-lj1-f193.google.com (mail-lj1-f193.google.com [209.85.208.193]) by imf23.hostedemail.com (Postfix) with ESMTP for ; Wed, 27 May 2020 20:51:04 +0000 (UTC) Received: by mail-lj1-f193.google.com with SMTP id z18so30627838lji.12 for ; Wed, 27 May 2020 13:51:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=4YVYRNvysn9oOP+JbhCab5oPWw+cahvTfFV2XbJXPH8=; b=oMrUJZwK/+gkd0z9VgJ4X4RolejBPUiCG6Yidd84ll5pzlM+XjF7P+DuSSd/MrUMy2 t9F5OqcazuBiIoU72sVHm7Xef2At2euugQ4sASnQLHP4GFG3Fx3xhNmapcDjPwh0Tiwm EckLuH8c064w0mo6R8INxZqDybhzkaFKsBGUoMRoLKadfHMNdOfIhTn+pN4NM09K3kvq arOt2fJ/9kf8aQPej9WzYfNy5Td3JPNNQrgdAj5wrDoCVNQGD1CzHhj9DCWV8MmTWc0P NpTxDEm3ClDVtw88sSl8R7al/GIIfI6PkxEA0DMvLENNZRA4lWH8efG2e0hKeWBfRVtQ y0jA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=4YVYRNvysn9oOP+JbhCab5oPWw+cahvTfFV2XbJXPH8=; b=ccBAVdrfcePmSscp11TgcD3KKtcwXllInALppEuqu8o+po4d4G3Oc4sK3XgHLxY0IT 9Vxnv1dG4UXXdTdNdsqids39+ofh+FSzgoksaF1JOK9o9hR9BnswZvVG5XaAvO5IL4F2 7RdXLCG2lMDPHrVJ0V6AAIo3dM4Z4NsF58lkRdUpr2vnYtFP1etnrB6WnQq1Fnuhu52d E3SkdIqkPhNleiGweM3t8VpeN4sxoRxmxTjVUcpyaY6cggRDN8eEVJ2Uad3uBv12J2mF BNgNT02WQbrPzMELcjPh0LuviP2AApqGAsmxRihnYC1lg5FuIk3SugXwDodoKms8oJtb IpNg== X-Gm-Message-State: AOAM5324ZAKLuMYjKo5fFShR0elJBMiXg3SLXZmnd0uNUbx9cfGeULyK zeLsGlfx0a0Xneq1k7VMNyY= X-Google-Smtp-Source: ABdhPJyZDeKx+C3ZTCkdHxWT44zyxSQUeuEeiLbGry792ADyf+rasHZkF14TwB0Vasi3/jtLj7i4cQ== X-Received: by 2002:a2e:8811:: with SMTP id x17mr3776076ljh.140.1590612662606; Wed, 27 May 2020 13:51:02 -0700 (PDT) Received: from pc638.lan (h5ef52e31.seluork.dyn.perspektivbredband.net. [94.245.46.49]) by smtp.gmail.com with ESMTPSA id z78sm1045919lfc.80.2020.05.27.13.51.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 May 2020 13:51:01 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: Andrew Morton Cc: linux-mm@kvack.org, LKML , Uladzislau Rezki , Hillf Danton , Michal Hocko , Matthew Wilcox , Oleksiy Avramchenko , Steven Rostedt Subject: [PATCH 1/3] mm/vmalloc: simplify merge_or_add_vmap_area() func. Date: Wed, 27 May 2020 22:50:52 +0200 Message-Id: <20200527205054.1696-1-urezki@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-Rspamd-Queue-Id: B5200180868F0 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam04 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000148, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Currently when a VA is deallocated and is about to be placed back to the tree, it can be either: merged with next/prev neighbors or inserted if not coalesced. On those steps the tree can be populated several times. For example when both neighbors are merged. It can be avoided and simplified in fact. Therefore do it only once when VA points to final merged area, after all manipulations: merging/removing/inserting. Signed-off-by: Uladzislau Rezki (Sony) --- mm/vmalloc.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 410bfe26ee73..a875eef1e2c2 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -753,9 +753,6 @@ merge_or_add_vmap_area(struct vmap_area *va, if (sibling->va_start == va->va_end) { sibling->va_start = va->va_start; - /* Check and update the tree if needed. */ - augment_tree_propagate_from(sibling); - /* Free vmap_area object. */ kmem_cache_free(vmap_area_cachep, va); @@ -775,14 +772,18 @@ merge_or_add_vmap_area(struct vmap_area *va, if (next->prev != head) { sibling = list_entry(next->prev, struct vmap_area, list); if (sibling->va_end == va->va_start) { - sibling->va_end = va->va_end; - - /* Check and update the tree if needed. */ - augment_tree_propagate_from(sibling); - + /* + * If both neighbors are coalesced, it is important + * to unlink the "next" node first, followed by merging + * with "previous" one. Otherwise the tree might not be + * fully populated if a sibling's augmented value is + * "normalized" because of rotation operations. + */ if (merged) unlink_va(va, root); + sibling->va_end = va->va_end; + /* Free vmap_area object. */ kmem_cache_free(vmap_area_cachep, va); @@ -793,11 +794,13 @@ merge_or_add_vmap_area(struct vmap_area *va, } insert: - if (!merged) { + if (!merged) link_va(va, root, parent, link, head); - augment_tree_propagate_from(va); - } + /* + * Last step is to check and update the tree. + */ + augment_tree_propagate_from(va); return va; }