From patchwork Mon May 25 21:47:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Uladzislau Rezki X-Patchwork-Id: 11569469 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 1481D913 for ; Mon, 25 May 2020 21:48:19 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id CC4842075F for ; Mon, 25 May 2020 21:48:18 +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="P3m9JiCz" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CC4842075F 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 E366980063; Mon, 25 May 2020 17:48:15 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id D9C3380061; Mon, 25 May 2020 17:48:15 -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 BC73880063; Mon, 25 May 2020 17:48:15 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0216.hostedemail.com [216.40.44.216]) by kanga.kvack.org (Postfix) with ESMTP id A239780061 for ; Mon, 25 May 2020 17:48:15 -0400 (EDT) Received: from smtpin04.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 58DE3824556B for ; Mon, 25 May 2020 21:48:15 +0000 (UTC) X-FDA: 76856580150.04.fang39_2af063d16523b X-Spam-Summary: 2,0,0,e788284951e7f676,d41d8cd98f00b204,urezki@gmail.com,,RULES_HIT:41:355:379:541:800:960:965:966:973:988:989:1260:1311:1314:1345:1359:1437:1515:1534:1541:1711:1730:1747:1777:1792:2196:2199:2393:2559:2562:3138:3139:3140:3141:3142:3352:3865:3866:3867:3868:3870:3871:3872:3874:4321:4385:4390:4395:5007:6261:6653:7514:7903:9413:10004:11026:11658:11914:12043:12294:12296:12297:12438:12517:12519:12555:12679:12895:12986:13069:13311:13357:13868:13894:14096:14181:14384:14394:14687:14721:21080:21433:21444:21451:21627:21666:21740:21990:30045:30054,0,RBL:209.85.208.194:@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:24,LUA_SUMMARY:none X-HE-Tag: fang39_2af063d16523b X-Filterd-Recvd-Size: 4801 Received: from mail-lj1-f194.google.com (mail-lj1-f194.google.com [209.85.208.194]) by imf33.hostedemail.com (Postfix) with ESMTP for ; Mon, 25 May 2020 21:48:14 +0000 (UTC) Received: by mail-lj1-f194.google.com with SMTP id k5so22125433lji.11 for ; Mon, 25 May 2020 14:48:14 -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:in-reply-to:references :mime-version:content-transfer-encoding; bh=4AXOThceM9HQTaD/1C2DnJHW4BibV/GSMKqCaOTg8gw=; b=P3m9JiCzUkqtxpY3mGwyXff/VaAi3lP8/Tw+HlJuwPCpcTr92OEkjgnqiZ51xr+MHa z49tq0aEIaaYGJKwcR6O6FW9FIExXQV1fFTdIfYDAjMWi+wCwWncxFYb/JFPYlqTXRBy VCUuHP7h++feYt4Np0dchSCZwta7xjAVajnIwZR8hWoZ/a7tG+J8V6FMvgGM7Rez+tsl wfN00uPkBMigNVhsfJGkkX+qjkKyweTM+CS6DU1+ugrgKsVomI/1uCAPxvj8+xcLvX8e lfWO+lPdcbH1PdVu9/kxMln3KnnoOJJqj1I0kKe/FE6oBlUYB4pysxmaQ+FYMmGNX0WT dmbQ== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=4AXOThceM9HQTaD/1C2DnJHW4BibV/GSMKqCaOTg8gw=; b=dxP2t3dhkMg4B88pD6YwElEmma0kEfVtfDtaeq9joMQNmCLaiS6oH86qwsVGJlO7s1 xChg27fKBETc3KCg4hXKOn3zmDvik4epygeYHA5/NoHrAlwwgeexZSzsSgbmd7ml35aW 3UPZFmU+Vkaa4sZdyc7JBURoaIu1bu1j9yTwjtYlW1cshU4KrVttR9m3Xqt9/dmHKdgG sof8JP4NxfhYDIfCXBgjIY5ZdUEaoXQWbEhQ+2Wppmr+7CdQ+u8IAwd9ld9Rji9kY5KV 4asfNYzjbjNOjsdKP6OpREB71UWTBdWmV92NAhepM1gJR+/nZvKJqRKfxD0I017XXHs/ U+GA== X-Gm-Message-State: AOAM532c9YahzOlvcmdGII8kZD5sXiGYHjtumU5ACYKPGBXmzwxRAncG NejWT6AZzOYzmdA+EexxHvA= X-Google-Smtp-Source: ABdhPJwoXkLN/yki/p/Nl7rk5K8p4UfzLX1z4H8VqCpUnDmQzGXhiEVBIV01t81o4vGj/zpvUKz2og== X-Received: by 2002:a2e:9910:: with SMTP id v16mr14937280lji.213.1590443293740; Mon, 25 May 2020 14:48:13 -0700 (PDT) Received: from pc638.lan (h5ef52e31.seluork.dyn.perspektivbredband.net. [94.245.46.49]) by smtp.gmail.com with ESMTPSA id a6sm2280044lji.29.2020.05.25.14.48.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 May 2020 14:48:13 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: LKML , linux-mm@kvack.org Cc: Andrew Morton , "Paul E . McKenney" , "Theodore Y . Ts'o" , Matthew Wilcox , Joel Fernandes , RCU , Uladzislau Rezki , Oleksiy Avramchenko Subject: [PATCH v2 03/16] rcu/tree: Repeat the monitor if any free channel is busy Date: Mon, 25 May 2020 23:47:47 +0200 Message-Id: <20200525214800.93072-4-urezki@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200525214800.93072-1-urezki@gmail.com> References: <20200525214800.93072-1-urezki@gmail.com> MIME-Version: 1.0 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: It is possible that one of the channels cannot be detached because its free channel is busy and previously queued data has not been processed yet. On the other hand, another channel can be successfully detached causing the monitor work to stop. Prevent that by rescheduling the monitor work if there are any channels in the pending state after a detach attempt. Fixes: 34c881745549e ("rcu: Support kfree_bulk() interface in kfree_rcu()") Acked-by: Joel Fernandes (Google) Signed-off-by: Uladzislau Rezki (Sony) --- kernel/rcu/tree.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index d28010cf158b..ae21e1bddd3e 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -2971,7 +2971,7 @@ static void kfree_rcu_work(struct work_struct *work) static inline bool queue_kfree_rcu_work(struct kfree_rcu_cpu *krcp) { struct kfree_rcu_cpu_work *krwp; - bool queued = false; + bool repeat = false; int i; lockdep_assert_held(&krcp->lock); @@ -3009,11 +3009,14 @@ static inline bool queue_kfree_rcu_work(struct kfree_rcu_cpu *krcp) * been detached following each other, one by one. */ queue_rcu_work(system_wq, &krwp->rcu_work); - queued = true; } + + /* Repeat if any "free" corresponding channel is still busy. */ + if (krcp->bhead || krcp->head) + repeat = true; } - return queued; + return !repeat; } static inline void kfree_rcu_drain_unlock(struct kfree_rcu_cpu *krcp,