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 77266C433F5 for ; Wed, 10 Nov 2021 12:40:40 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 14E2B6115B for ; Wed, 10 Nov 2021 12:40:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 14E2B6115B 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 9C8656B006C; Wed, 10 Nov 2021 07:40:39 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9517B6B0071; Wed, 10 Nov 2021 07:40:39 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 819316B0072; Wed, 10 Nov 2021 07:40:39 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0151.hostedemail.com [216.40.44.151]) by kanga.kvack.org (Postfix) with ESMTP id 73AAE6B006C for ; Wed, 10 Nov 2021 07:40:39 -0500 (EST) Received: from smtpin08.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 2FE3C184DB459 for ; Wed, 10 Nov 2021 12:40:39 +0000 (UTC) X-FDA: 78792979398.08.411A120 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by imf28.hostedemail.com (Postfix) with ESMTP id 825BF900050D for ; Wed, 10 Nov 2021 12:40:38 +0000 (UTC) Received: by mail.kernel.org (Postfix) with ESMTPSA id 17F3E61058; Wed, 10 Nov 2021 12:40:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1636548037; bh=jc4GnoAH1zLaYyd8wpTtEW+INmncIENQJOMUgkY/0P0=; h=From:To:Cc:Subject:Date:In-Reply-To:From; b=fe04rNutJYlEc/QoIVbfU7ZNLoZP2S+meh9Nkag1bU6fKlX48O+UtA6R8c5Eh8SVT H4wrg97N8ulrIWszccGe4OeRKWVZ66vwBeRsIymK7HWHQgrNEApvohXIzCuRZv7z9l QeTzQgJWwFasPOkKuwWMXt4Rc3ik+TvvtSNctFUNluIt7K/5bvP1UfI7odTgHqzLXN Hbl0ZLLakQcQvTAschhf5k5qOdPY++Np/bpvtdtAwNFVQ3FCfnZT9hpzPX91X4WTgO z6xzVJlHGBEi31Fkphae5pU5q5nOlRm0tuACjhrdb4i28JVnTIy8DnzYw8HbgzY3KG zFWG45D5dTuoQ== From: SeongJae Park To: alexs@kernel.org Cc: SeongJae Park , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [RFC PATCH] mm/damon: remove damon_lock Date: Wed, 10 Nov 2021 12:40:34 +0000 Message-Id: <20211110124034.2574-1-sj@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211110114721.133808-1-alexs@kernel.org> X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 825BF900050D X-Stat-Signature: gefe3ik1dtahgyh7rm4m195e95zs3pfg Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=fe04rNut; spf=pass (imf28.hostedemail.com: domain of sj@kernel.org designates 198.145.29.99 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=none) header.from=kernel.org X-HE-Tag: 1636548038-524995 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: Thank you for this patch, Alex! On Wed, 10 Nov 2021 19:47:21 +0800 alexs@kernel.org wrote: > From: Alex Shi > > Variable nr_running_ctxs guards by damon_lock, but a lock for a int > variable seems a bit heavy, a atomic_t is enough. The lock is not only for protecting nr_running_ctxs, but also for avoiding different users concurrently executing damon_start(), because that could allow the users interfering others. > > Signed-off-by: Alex Shi > Cc: SeongJae Park > Cc: Andrew Morton > Cc: linux-mm@kvack.org > Cc: linux-kernel@vger.kernel.org > --- > include/linux/damon.h | 1 - > mm/damon/core.c | 31 +++++-------------------------- > mm/damon/dbgfs.c | 8 +++++--- > 3 files changed, 10 insertions(+), 30 deletions(-) > > diff --git a/include/linux/damon.h b/include/linux/damon.h > index b4d4be3cc987..e5dcc6336ef2 100644 > --- a/include/linux/damon.h > +++ b/include/linux/damon.h > @@ -453,7 +453,6 @@ int damon_set_attrs(struct damon_ctx *ctx, unsigned long sample_int, > unsigned long min_nr_reg, unsigned long max_nr_reg); > int damon_set_schemes(struct damon_ctx *ctx, > struct damos **schemes, ssize_t nr_schemes); > -int damon_nr_running_ctxs(void); > > int damon_start(struct damon_ctx **ctxs, int nr_ctxs); > int damon_stop(struct damon_ctx **ctxs, int nr_ctxs); > diff --git a/mm/damon/core.c b/mm/damon/core.c > index c381b3c525d0..e821e36d5c10 100644 > --- a/mm/damon/core.c > +++ b/mm/damon/core.c [...] > @@ -437,19 +422,15 @@ int damon_start(struct damon_ctx **ctxs, int nr_ctxs) > int i; > int err = 0; > > - mutex_lock(&damon_lock); > - if (nr_running_ctxs) { > - mutex_unlock(&damon_lock); > + if (atomic_read(&nr_running_ctxs)) > return -EBUSY; > - } > > for (i = 0; i < nr_ctxs; i++) { > err = __damon_start(ctxs[i]); > if (err) > break; > - nr_running_ctxs++; > + atomic_inc(&nr_running_ctxs); > } > - mutex_unlock(&damon_lock); > > return err; > } This would let multiple concurrent threads seeing nr_running_ctxs of zero and therefore proceed together. Thanks, SJ