From: Randy Dunlap <rdunlap@infradead.org>
To: Qiaowei Ren <qiaowei.ren@intel.com>, linux-bcache@vger.kernel.org
Cc: jianpeng.ma@intel.com, colyli@suse.de, rdunlap@infradead.oom,
Colin Ian King <colin.king@canonical.com>
Subject: Re: [bch-nvm-pages v9 2/6] bcache: initialize the nvm pages allocator
Date: Wed, 28 Apr 2021 10:53:59 -0700 [thread overview]
Message-ID: <69f9e7f2-b09c-ed9b-e08f-777ce374a7d7@infradead.org> (raw)
In-Reply-To: <20210428213952.197504-3-qiaowei.ren@intel.com>
Hi,
On 4/28/21 2:39 PM, Qiaowei Ren wrote:
> From: Jianpeng Ma <jianpeng.ma@intel.com>
>
> This patch define the prototype data structures in memory and initializes
> the nvm pages allocator.
>
> The nvm address space which is managed by this allocatior can consist of
allocator
> many nvm namespaces, and some namespaces can compose into one nvm set,
> like cache set. For this initial implementation, only one set can be
> supported.
>
> The users of this nvm pages allocator need to call regiseter_namespace()
register_namespace()
> to register the nvdimm device (like /dev/pmemX) into this allocator as
> the instance of struct nvm_namespace.
>
> v9:
> -Fix Kconfig dependance error(Reported-by Randy)
dependence
> -Fix an uninitialized return value(Colin)
>
> Reported-by: Randy Dunlap <rdunlap@infradead.org>
> Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
> Co-developed-by: Qiaowei Ren <qiaowei.ren@intel.com>
> Signed-off-by: Qiaowei Ren <qiaowei.ren@intel.com>
> Signed-off-by: Coly Li <colyli@suse.de>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
> drivers/md/bcache/Kconfig | 8 +
> drivers/md/bcache/Makefile | 2 +-
> drivers/md/bcache/nvm-pages.c | 285 ++++++++++++++++++++++++++++++++++
> drivers/md/bcache/nvm-pages.h | 74 +++++++++
> drivers/md/bcache/super.c | 3 +
> 5 files changed, 371 insertions(+), 1 deletion(-)
> create mode 100644 drivers/md/bcache/nvm-pages.c
> create mode 100644 drivers/md/bcache/nvm-pages.h
>
> diff --git a/drivers/md/bcache/Kconfig b/drivers/md/bcache/Kconfig
> index d1ca4d059c20..3057da4cf8ff 100644
> --- a/drivers/md/bcache/Kconfig
> +++ b/drivers/md/bcache/Kconfig
> @@ -35,3 +35,11 @@ config BCACHE_ASYNC_REGISTRATION
> device path into this file will returns immediately and the real
> registration work is handled in kernel work queue in asynchronous
> way.
> +
> +config BCACHE_NVM_PAGES
> + bool "NVDIMM support for bcache (EXPERIMENTAL)"
> + depends on BCACHE
> + depends on LIBNVDIMM
> + depends on DAX
> + help
> + nvm pages allocator for bcache.
> diff --git a/drivers/md/bcache/Makefile b/drivers/md/bcache/Makefile
> index 5b87e59676b8..948e5ed2ca66 100644
> --- a/drivers/md/bcache/Makefile
> +++ b/drivers/md/bcache/Makefile
> @@ -4,4 +4,4 @@ obj-$(CONFIG_BCACHE) += bcache.o
>
> bcache-y := alloc.o bset.o btree.o closure.o debug.o extents.o\
> io.o journal.o movinggc.o request.o stats.o super.o sysfs.o trace.o\
> - util.o writeback.o features.o
> + util.o writeback.o features.o nvm-pages.o
This is not the right way to add an optional piece of code (nvm-pages.o)
to the full linked binary.
I.e., it is added unconditionally here and then inside its .c file, the
entire file is bracketed with (see below):
#ifdef CONFIG_BCACHE_NVM_PAGES
...
#endif /* CONFIG_BCACHE_NVM_PAGES */
The right way to do this is in Kconfig and Makefile changes alone,
and then nvm-pages.c does not need that huge #ifdef/#endif bracketing.
Documentation/kbuild/*.rst has some references to this, but it's probably
easier just to look at some examples.
E.g., see drivers/usb/common/: Kconfig and Makefile and how CONFIG_TRACING
adds debug.o to the usb-common-y binary build.
Same for USB_LED_TRIG and led.o.
> diff --git a/drivers/md/bcache/nvm-pages.c b/drivers/md/bcache/nvm-pages.c
> new file mode 100644
> index 000000000000..976ab9002c17
> --- /dev/null
> +++ b/drivers/md/bcache/nvm-pages.c
> @@ -0,0 +1,285 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Nvdimm page-buddy allocator
> + *
> + * Copyright (c) 2021, Intel Corporation.
> + * Copyright (c) 2021, Qiaowei Ren <qiaowei.ren@intel.com>.
> + * Copyright (c) 2021, Jianpeng Ma <jianpeng.ma@intel.com>.
> + */
> +
> +#ifdef CONFIG_BCACHE_NVM_PAGES
[delete many lines]
> +
> +#endif /* CONFIG_BCACHE_NVM_PAGES */
The header (.h) file also probably needs some fixing up.
thanks.
--
~Randy
next prev parent reply other threads:[~2021-04-28 17:55 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-28 21:39 [bch-nvm-pages v9 0/6] nvm page allocator for bcache Qiaowei Ren
2021-04-28 21:39 ` [bch-nvm-pages v9 1/6] bcache: add initial data structures for nvm pages Qiaowei Ren
2021-04-28 21:39 ` [bch-nvm-pages v9 2/6] bcache: initialize the nvm pages allocator Qiaowei Ren
2021-04-28 16:29 ` Randy Dunlap
2021-04-29 0:13 ` Ma, Jianpeng
2021-04-28 17:53 ` Randy Dunlap [this message]
2021-05-11 3:53 ` Coly Li
2021-04-28 21:39 ` [bch-nvm-pages v9 3/6] bcache: initialization of the buddy Qiaowei Ren
2021-05-11 5:35 ` Coly Li
2021-04-28 21:39 ` [bch-nvm-pages v9 4/6] bcache: bch_nvm_alloc_pages() " Qiaowei Ren
2021-05-11 12:49 ` Coly Li
2021-05-18 2:27 ` Ma, Jianpeng
2021-05-18 2:45 ` Coly Li
2021-04-28 21:39 ` [bch-nvm-pages v9 5/6] bcache: bch_nvm_free_pages() " Qiaowei Ren
2021-05-11 13:41 ` Coly Li
2021-04-28 21:39 ` [bch-nvm-pages v9 6/6] bcache: get allocated pages from specific owner Qiaowei Ren
2021-05-11 13:45 ` Coly Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=69f9e7f2-b09c-ed9b-e08f-777ce374a7d7@infradead.org \
--to=rdunlap@infradead.org \
--cc=colin.king@canonical.com \
--cc=colyli@suse.de \
--cc=jianpeng.ma@intel.com \
--cc=linux-bcache@vger.kernel.org \
--cc=qiaowei.ren@intel.com \
--cc=rdunlap@infradead.oom \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).