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 X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D760BC388F9 for ; Sat, 7 Nov 2020 17:08:18 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 5BD5620888 for ; Sat, 7 Nov 2020 17:08:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="F/nMhRJw" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5BD5620888 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 6A0146B0036; Sat, 7 Nov 2020 12:08:17 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 629E86B005D; Sat, 7 Nov 2020 12:08:17 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4F0EC6B0068; Sat, 7 Nov 2020 12:08:17 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0187.hostedemail.com [216.40.44.187]) by kanga.kvack.org (Postfix) with ESMTP id 12CF86B0036 for ; Sat, 7 Nov 2020 12:08:17 -0500 (EST) Received: from smtpin22.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id A057A362B for ; Sat, 7 Nov 2020 17:08:16 +0000 (UTC) X-FDA: 77458255392.22.alley54_4d13272272dc Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin22.hostedemail.com (Postfix) with ESMTP id 7E8B318038E68 for ; Sat, 7 Nov 2020 17:08:16 +0000 (UTC) X-HE-Tag: alley54_4d13272272dc X-Filterd-Recvd-Size: 5793 Received: from mail-qv1-f66.google.com (mail-qv1-f66.google.com [209.85.219.66]) by imf49.hostedemail.com (Postfix) with ESMTP for ; Sat, 7 Nov 2020 17:08:15 +0000 (UTC) Received: by mail-qv1-f66.google.com with SMTP id w5so2015011qvn.12 for ; Sat, 07 Nov 2020 09:08:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=fKy0LpeHsg6BslNULkInom8HrfOt19qae6yN9HaQSM4=; b=F/nMhRJwqXsJ03U3zJ7H24RE+e21YludQADd7TUZ7h/jgkjkLZvuv1fTmWQ/EYCeBO w3S2z9uIFdB6wW60kuC76BgJBL8BpDxHaU4hqg+DoTzw6zj7sgaO4bM29+ZG7dbZMA7u fO9L5u1UXIwmXJ7iSXdEqg+qx3iF9HL2vnid9GINmamXb5N7vd6SEQSmPK/euO32MhGn WRW/+6S9cs72AzQn1V4PZhnke7s4NtfCOL0WyaKH5qJzpH1J3Y4uiUPZCo4vH6JPZDIl yX7sc4u2e6/AqNUSNzJ3R2RpgRmjzZNYnTL/gJ68gFqjPWllQQkTsCG5Heed85YnlKiR oAOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=fKy0LpeHsg6BslNULkInom8HrfOt19qae6yN9HaQSM4=; b=j9fGKT3VRmrIwR/f5tstV1u/GyOdFmgfeEwAVRyM7+iVBIPphrSjAvrOZueh1FlxnA cDydSrk0bOGTHhoAPszoLm5s2h3OpOvSS5eDjhnL/zVEjrJgO2/8+SohevUWIUs3bUCJ p8VvLZau5MwFPl7mfO+cWEfWeSqzPAfaWM6Mp4dcVQgTbdbGk6PbqGh9vfuxS3TGy/yz fmlcj9+yecorGNgcFrTm5CdmAmaSNoscq4XbU0Ryqlq2NKFNv/dyfGWuUE/7W6ZaFnkp 4UfQKkA5uu59FicaI6nvsC/GL6IrsM5bVO0s/p3U2sTzAIR+Z1PW4quDzfytnbBnfOpR VCew== X-Gm-Message-State: AOAM532eFeLNhcXgBZnBFro51aGAL8EXp4k8NltO3XVQ1bl/tJkn/yjr SCcWkD2an1M63RGWsfqacg== X-Google-Smtp-Source: ABdhPJyr23Wi6Y2V0RZXCNx7hFsvCIJ+YG9xiahNJCb+eB3izU5InXz4zEL6dogCohn+/K2DfWgH1A== X-Received: by 2002:ad4:5381:: with SMTP id i1mr6899653qvv.21.1604768895470; Sat, 07 Nov 2020 09:08:15 -0800 (PST) Received: from moria.home.lan (c-73-219-103-14.hsd1.vt.comcast.net. [73.219.103.14]) by smtp.gmail.com with ESMTPSA id h12sm2705172qta.94.2020.11.07.09.08.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Nov 2020 09:08:14 -0800 (PST) Date: Sat, 7 Nov 2020 12:08:13 -0500 From: Kent Overstreet To: "Matthew Wilcox (Oracle)" Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, hch@lst.de Subject: Re: [PATCH 1/4] pagevec: Allow pagevecs to be different sizes Message-ID: <20201107170813.GD3365678@moria.home.lan> References: <20201106080815.GC31585@lst.de> <20201106123040.28451-1-willy@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20201106123040.28451-1-willy@infradead.org> 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: On Fri, Nov 06, 2020 at 12:30:37PM +0000, Matthew Wilcox (Oracle) wrote: > Declaring a pagevec continues to create a pagevec which is the same size, > but functions which manipulate pagevecs no longer rely on this. > > Signed-off-by: Matthew Wilcox (Oracle) > --- > include/linux/pagevec.h | 20 ++++++++++++++++---- > mm/swap.c | 8 ++++++++ > 2 files changed, 24 insertions(+), 4 deletions(-) > > diff --git a/include/linux/pagevec.h b/include/linux/pagevec.h > index 875a3f0d9dd2..ee5d3c4da8da 100644 > --- a/include/linux/pagevec.h > +++ b/include/linux/pagevec.h > @@ -18,9 +18,15 @@ struct page; > struct address_space; > > struct pagevec { > - unsigned char nr; > - bool percpu_pvec_drained; > - struct page *pages[PAGEVEC_SIZE]; > + union { > + struct { > + unsigned char sz; > + unsigned char nr; > + bool percpu_pvec_drained; This should probably be removed, it's only used by the swap code and I don't think it belongs in the generic data structure. That would mean nr and size (and let's please use more standard naming...) can be u32, not u8s. > + struct page *pages[PAGEVEC_SIZE]; > + }; > + void *__p[PAGEVEC_SIZE + 1]; What's up with this union? > + }; > }; > > void __pagevec_release(struct pagevec *pvec); > @@ -41,6 +47,7 @@ static inline unsigned pagevec_lookup_tag(struct pagevec *pvec, > > static inline void pagevec_init(struct pagevec *pvec) > { > + pvec->sz = PAGEVEC_SIZE; > pvec->nr = 0; > pvec->percpu_pvec_drained = false; > } > @@ -50,6 +57,11 @@ static inline void pagevec_reinit(struct pagevec *pvec) > pvec->nr = 0; > } > > +static inline unsigned pagevec_size(struct pagevec *pvec) > +{ > + return pvec->sz; > +} > + > static inline unsigned pagevec_count(struct pagevec *pvec) > { > return pvec->nr; > @@ -57,7 +69,7 @@ static inline unsigned pagevec_count(struct pagevec *pvec) > > static inline unsigned pagevec_space(struct pagevec *pvec) > { > - return PAGEVEC_SIZE - pvec->nr; > + return pvec->sz - pvec->nr; > } > > /* > diff --git a/mm/swap.c b/mm/swap.c > index 2ee3522a7170..d093fb30f038 100644 > --- a/mm/swap.c > +++ b/mm/swap.c > @@ -52,6 +52,7 @@ struct lru_rotate { > }; > static DEFINE_PER_CPU(struct lru_rotate, lru_rotate) = { > .lock = INIT_LOCAL_LOCK(lock), > + .pvec.sz = PAGEVEC_SIZE, > }; > > /* > @@ -70,6 +71,13 @@ struct lru_pvecs { > }; > static DEFINE_PER_CPU(struct lru_pvecs, lru_pvecs) = { > .lock = INIT_LOCAL_LOCK(lock), > + .lru_add.sz = PAGEVEC_SIZE, > + .lru_deactivate_file.sz = PAGEVEC_SIZE, > + .lru_deactivate.sz = PAGEVEC_SIZE, > + .lru_lazyfree.sz = PAGEVEC_SIZE, > +#ifdef CONFIG_SMP > + .activate_page.sz = PAGEVEC_SIZE, > +#endif > }; > > /* > -- > 2.28.0 >