Message ID | 20200428205903.61704-5-urezki@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show
Return-Path: <SRS0=4I4d=6M=kvack.org=owner-linux-mm@kernel.org> 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 2AD651392 for <patchwork-linux-mm@patchwork.kernel.org>; Tue, 28 Apr 2020 20:59:39 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id EC93320B80 for <patchwork-linux-mm@patchwork.kernel.org>; Tue, 28 Apr 2020 20:59:38 +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="gV/CkO5+" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EC93320B80 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 3E64D8E0009; Tue, 28 Apr 2020 16:59:35 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 3457E8E0007; Tue, 28 Apr 2020 16:59:35 -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 199C18E0009; Tue, 28 Apr 2020 16:59:35 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0058.hostedemail.com [216.40.44.58]) by kanga.kvack.org (Postfix) with ESMTP id 003088E0007 for <linux-mm@kvack.org>; Tue, 28 Apr 2020 16:59:34 -0400 (EDT) Received: from smtpin04.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id B5856181AC9CB for <linux-mm@kvack.org>; Tue, 28 Apr 2020 20:59:34 +0000 (UTC) X-FDA: 76758479868.04.chain75_5394c7f36bc3e X-Spam-Summary: 2,0,0,4cb808df23000f8a,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:12895:13069:13161:13229: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.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:24,LUA_SUMMARY:none X-HE-Tag: chain75_5394c7f36bc3e X-Filterd-Recvd-Size: 4664 Received: from mail-lj1-f193.google.com (mail-lj1-f193.google.com [209.85.208.193]) by imf18.hostedemail.com (Postfix) with ESMTP for <linux-mm@kvack.org>; Tue, 28 Apr 2020 20:59:34 +0000 (UTC) Received: by mail-lj1-f193.google.com with SMTP id h4so186689ljg.12 for <linux-mm@kvack.org>; Tue, 28 Apr 2020 13:59:34 -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=f76tELWeD+Cq+rZ2nxZRf+Lr/87HEoPSQFMjularl7s=; b=gV/CkO5+yDyR2BtTpL6acO8ksCDaXgZ/Mdr2KfSt7vXdkvrp4vOh/EADiQ+zywJynU SW+xHfk1uQ7+y0BZmXWDIBpHOcaYmayvBGUtylXj+cpbhBc7CTIYYMNu+GmNXzuoNrcK LQQL+TKgLOAdzqkzJdIXnyxJl2ESUoKsAUj7M8ZORs+qdnsrzVtbAW4m+j9OmrKINiQL kMqQ9fkjfLUv92lX/AsSVbgu57rLtx+1xZzxIXBJqv0tzjziR3KKb4pVigwpCSfoe2Sh 4ziWCwAOPAaSd2ZobdNxQWOKAXSX/P3uF0WYwAfizNleUDYBDPtSggXR9NgJBbf/lPNL 8O1A== 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=f76tELWeD+Cq+rZ2nxZRf+Lr/87HEoPSQFMjularl7s=; b=MYNnZK6sOQg7gpklqodM16yBGiXosd47tducww67khfIWhLAmwB4wSVOaCaKuFEtas NapaoDU7AfIie/lQ/9F5T2sVd83RrtmY6gtNI95ICBK7X7V/ZNRd/fINBQ0YOCVLEvHS 4c9LrKt34kG/41DVTu/DiMxkGrLP1OnVnp7yW04DyJ5qFrYhy22ZHFOyFsrjGHmiu3OU +SjZOu7PXtjvX9SHrNa16P5jci3iHy9OT9HuLq4n3Caj44kXKZm9v7v0WcUHhR89Jnqw yjddmQSNDoJp1iCXl3xwQH5e8BIHDvNrlZEknWMjkb4QP01MxL2cclGnECnOZFvP7cn7 iirg== X-Gm-Message-State: AGi0PuY0WqVplye0QHO+meFjO3qzDkgfzbeG9lsP3DgoWGra40QH837H xgj64xdvaKwdY4hKb3lxDtg= X-Google-Smtp-Source: APiQypIyLU6bchTrGUBspJZC7W9x7kj6ckHQy61yTYUJR3oMfNtrovTxVulDU2ZLcnOnbM6O4XdWEQ== X-Received: by 2002:a2e:909a:: with SMTP id l26mr18315311ljg.262.1588107572992; Tue, 28 Apr 2020 13:59:32 -0700 (PDT) Received: from pc638.lan (h5ef52e31.seluork.dyn.perspektivbredband.net. [94.245.46.49]) by smtp.gmail.com with ESMTPSA id z21sm295483ljh.42.2020.04.28.13.59.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2020 13:59:32 -0700 (PDT) From: "Uladzislau Rezki (Sony)" <urezki@gmail.com> To: LKML <linux-kernel@vger.kernel.org>, linux-mm@kvack.org Cc: Andrew Morton <akpm@linux-foundation.org>, "Paul E . McKenney" <paulmck@kernel.org>, "Theodore Y . Ts'o" <tytso@mit.edu>, Matthew Wilcox <willy@infradead.org>, Joel Fernandes <joel@joelfernandes.org>, RCU <rcu@vger.kernel.org>, Uladzislau Rezki <urezki@gmail.com>, Oleksiy Avramchenko <oleksiy.avramchenko@sonymobile.com> Subject: [PATCH 04/24] rcu/tree: Repeat the monitor if any free channel is busy Date: Tue, 28 Apr 2020 22:58:43 +0200 Message-Id: <20200428205903.61704-5-urezki@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200428205903.61704-1-urezki@gmail.com> References: <20200428205903.61704-1-urezki@gmail.com> MIME-Version: 1.0 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: <linux-mm.kvack.org> |
Series |
Introduce kvfree_rcu(1 or 2 arguments)
|
expand
|
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 1487af8e11e8..0762ac06f0b7 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -2995,7 +2995,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); @@ -3033,11 +3033,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,
It can be that one of the channels can not be detached due to the fact that its free channel and previous data has not been processed yet. From the other hand another channel can be successfully detached causing the monitor work to stop. To prevent that, if there are any channels are still in pending state after a detach attempt, just reschedule the monitor work. Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com> --- kernel/rcu/tree.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)