Hi folks, This is the first effort to store bcache meta data on NVDIMM, now the bcache journal can be stored on NVDIMM pages. The bcache code does not directly support NVDIMM, the NVDIMM pages are managed with a simple buddy-like pages alocator nvm-pages. The nvm-pages allocator is developed by Jianpeng Ma and Qiaowei Ren from Intel. It could be a separated kernel module to manage NVDIMM space in form of pages and share them among multiple users (drivers). Now nvm-pages is directly included in bcache kernel module as EXPERIMENTAL function. This series is a just-enough code to work, we will continue to improve both bcache and nvm-pages allocator before removing the EXPERIMENTAL tag from Kconfig. In the very basic testing 30%+ IOPS increasing is observed for 512Byte random writes when storing bcache journal jset on NVDIMM namespace. Thanks to Jianpeng Ma and Qiaowei Re fo their contribution to the mini nvm-pages allocator, which helps a lot to allocate and release the pages from NVDIMM nagespace much simpler for bcache journaling. Coly Li --- Coly Li (6): bcache: use bucket index for SET_GC_MARK() in bch_btree_gc_finish() bcache: add BCH_FEATURE_INCOMPAT_NVDIMM_META into incompat feature set bcache: initialize bcache journal for NVDIMM meta device bcache: support storing bcache journal into NVDIMM meta device bache: read jset from NVDIMM pages for journal replay bcache: add sysfs interface register_nvdimm_meta to register NVDIMM meta device drivers/md/bcache/btree.c | 6 +- drivers/md/bcache/features.h | 9 ++ drivers/md/bcache/journal.c | 288 +++++++++++++++++++++++++++-------- drivers/md/bcache/journal.h | 2 +- drivers/md/bcache/super.c | 38 ++++- 5 files changed, 274 insertions(+), 69 deletions(-) -- 2.26.2