From: Coly Li <colyli@suse.de> To: linux-bcache@vger.kernel.org Cc: linux-block@vger.kernel.org, linux-nvdimm@lists.01.org, axboe@kernel.dk, jianpeng.ma@intel.com, qiaowei.ren@intel.com, hare@suse.com, jack@suse.cz, Coly Li <colyli@suse.de> Subject: [PATCH v7 08/16] bcache: use bucket index to set GC_MARK_METADATA for journal buckets in bch_btree_gc_finish() Date: Sat, 10 Apr 2021 00:43:35 +0800 [thread overview] Message-ID: <20210409164343.56828-9-colyli@suse.de> (raw) In-Reply-To: <20210409164343.56828-1-colyli@suse.de> Currently the meta data bucket locations on cache device are reserved after the meta data stored on NVDIMM pages, for the meta data layout consistentcy temporarily. So these buckets are still marked as meta data by SET_GC_MARK() in bch_btree_gc_finish(). When BCH_FEATURE_INCOMPAT_NVDIMM_META is set, the sb.d[] stores linear address of NVDIMM pages and not bucket index anymore. Therefore we should avoid to find bucket index from sb.d[], and directly use bucket index from ca->sb.first_bucket to (ca->sb.first_bucket + ca->sb.njournal_bucketsi) for setting the gc mark of journal bucket. Signed-off-by: Coly Li <colyli@suse.de> Cc: Jianpeng Ma <jianpeng.ma@intel.com> Cc: Qiaowei Ren <qiaowei.ren@intel.com> --- drivers/md/bcache/btree.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c index fe6dce125aba..28edd884bd5d 100644 --- a/drivers/md/bcache/btree.c +++ b/drivers/md/bcache/btree.c @@ -1761,8 +1761,10 @@ static void bch_btree_gc_finish(struct cache_set *c) ca = c->cache; ca->invalidate_needs_gc = 0; - for (k = ca->sb.d; k < ca->sb.d + ca->sb.keys; k++) - SET_GC_MARK(ca->buckets + *k, GC_MARK_METADATA); + /* Range [first_bucket, first_bucket + keys) is for journal buckets */ + for (i = ca->sb.first_bucket; + i < ca->sb.first_bucket + ca->sb.njournal_buckets; i++) + SET_GC_MARK(ca->buckets + i, GC_MARK_METADATA); for (k = ca->prio_buckets; k < ca->prio_buckets + prio_buckets(ca) * 2; k++) -- 2.26.2 _______________________________________________ Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org To unsubscribe send an email to linux-nvdimm-leave@lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: Coly Li <colyli@suse.de> To: linux-bcache@vger.kernel.org Cc: linux-block@vger.kernel.org, linux-nvdimm@lists.01.org, axboe@kernel.dk, jianpeng.ma@intel.com, qiaowei.ren@intel.com, hare@suse.com, jack@suse.cz, dan.j.williams@intel.com, Coly Li <colyli@suse.de> Subject: [PATCH v7 08/16] bcache: use bucket index to set GC_MARK_METADATA for journal buckets in bch_btree_gc_finish() Date: Sat, 10 Apr 2021 00:43:35 +0800 [thread overview] Message-ID: <20210409164343.56828-9-colyli@suse.de> (raw) In-Reply-To: <20210409164343.56828-1-colyli@suse.de> Currently the meta data bucket locations on cache device are reserved after the meta data stored on NVDIMM pages, for the meta data layout consistentcy temporarily. So these buckets are still marked as meta data by SET_GC_MARK() in bch_btree_gc_finish(). When BCH_FEATURE_INCOMPAT_NVDIMM_META is set, the sb.d[] stores linear address of NVDIMM pages and not bucket index anymore. Therefore we should avoid to find bucket index from sb.d[], and directly use bucket index from ca->sb.first_bucket to (ca->sb.first_bucket + ca->sb.njournal_bucketsi) for setting the gc mark of journal bucket. Signed-off-by: Coly Li <colyli@suse.de> Cc: Jianpeng Ma <jianpeng.ma@intel.com> Cc: Qiaowei Ren <qiaowei.ren@intel.com> --- drivers/md/bcache/btree.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c index fe6dce125aba..28edd884bd5d 100644 --- a/drivers/md/bcache/btree.c +++ b/drivers/md/bcache/btree.c @@ -1761,8 +1761,10 @@ static void bch_btree_gc_finish(struct cache_set *c) ca = c->cache; ca->invalidate_needs_gc = 0; - for (k = ca->sb.d; k < ca->sb.d + ca->sb.keys; k++) - SET_GC_MARK(ca->buckets + *k, GC_MARK_METADATA); + /* Range [first_bucket, first_bucket + keys) is for journal buckets */ + for (i = ca->sb.first_bucket; + i < ca->sb.first_bucket + ca->sb.njournal_buckets; i++) + SET_GC_MARK(ca->buckets + i, GC_MARK_METADATA); for (k = ca->prio_buckets; k < ca->prio_buckets + prio_buckets(ca) * 2; k++) -- 2.26.2
next prev parent reply other threads:[~2021-04-09 16:44 UTC|newest] Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-04-09 16:43 [PATCH v7 00/16] bcache: support NVDIMM for journaling Coly Li 2021-04-09 16:43 ` Coly Li 2021-04-09 16:43 ` [PATCH v7 01/16] bcache: add initial data structures for nvm pages Coly Li 2021-04-09 16:43 ` Coly Li 2021-04-09 16:43 ` [PATCH v7 02/16] bcache: initialize the nvm pages allocator Coly Li 2021-04-09 16:43 ` Coly Li 2021-04-09 16:43 ` [PATCH v7 03/16] bcache: initialization of the buddy Coly Li 2021-04-09 16:43 ` Coly Li 2021-04-09 16:43 ` [PATCH v7 04/16] bcache: bch_nvm_alloc_pages() " Coly Li 2021-04-09 16:43 ` Coly Li 2021-04-09 16:43 ` [PATCH v7 05/16] bcache: bch_nvm_free_pages() " Coly Li 2021-04-09 16:43 ` Coly Li 2021-04-09 16:43 ` [PATCH v7 06/16] bcache: get allocated pages from specific owner Coly Li 2021-04-09 16:43 ` Coly Li 2021-04-09 16:43 ` [PATCH v7 07/16] bcache: nvm-pages fixes for bcache integration testing Coly Li 2021-04-09 16:43 ` Coly Li 2021-04-09 16:43 ` Coly Li [this message] 2021-04-09 16:43 ` [PATCH v7 08/16] bcache: use bucket index to set GC_MARK_METADATA for journal buckets in bch_btree_gc_finish() Coly Li 2021-04-09 16:43 ` [PATCH v7 09/16] bcache: add BCH_FEATURE_INCOMPAT_NVDIMM_META into incompat feature set Coly Li 2021-04-09 16:43 ` Coly Li 2021-04-09 16:43 ` [PATCH v7 10/16] bcache: initialize bcache journal for NVDIMM meta device Coly Li 2021-04-09 16:43 ` Coly Li 2021-04-09 16:43 ` [PATCH v7 11/16] bcache: support storing bcache journal into " Coly Li 2021-04-09 16:43 ` Coly Li 2021-04-09 16:43 ` [PATCH v7 12/16] bcache: read jset from NVDIMM pages for journal replay Coly Li 2021-04-09 16:43 ` Coly Li 2021-04-09 16:43 ` [PATCH v7 13/16] bcache: add sysfs interface register_nvdimm_meta to register NVDIMM meta device Coly Li 2021-04-09 16:43 ` Coly Li 2021-04-09 16:43 ` [PATCH v7 14/16] bcache: use div_u64() in init_owner_info() Coly Li 2021-04-09 16:43 ` Coly Li 2021-04-09 16:43 ` [PATCH v7 15/16] bcache: fix BCACHE_NVM_PAGES' dependences in Kconfig Coly Li 2021-04-09 16:43 ` Coly Li 2021-04-09 16:43 ` [PATCH v7 16/16] bcache: more fix for compiling error when BCACHE_NVM_PAGES disabled Coly Li 2021-04-09 16:43 ` 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=20210409164343.56828-9-colyli@suse.de \ --to=colyli@suse.de \ --cc=axboe@kernel.dk \ --cc=hare@suse.com \ --cc=jack@suse.cz \ --cc=jianpeng.ma@intel.com \ --cc=linux-bcache@vger.kernel.org \ --cc=linux-block@vger.kernel.org \ --cc=linux-nvdimm@lists.01.org \ --cc=qiaowei.ren@intel.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.